JS Plays With Emojis!

muhammadmp

Muhammad MP

Posted on April 26, 2023

JS Plays With Emojis!

Do you see the cover image? I saw that in a post, someone wondered about why it happens as if he had suddenly discovered one of Javascript's hidden features. But what is really happening there?


Let's have some fun with emojis:

const family = 'πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦'
console.log([...family])
// ['πŸ‘¨', '‍', 'πŸ‘©', '‍', 'πŸ‘§', '‍', 'πŸ‘¦']
Enter fullscreen mode Exit fullscreen mode

As you see, we have seven elements in the array, not only the member families; We got some emojis glued together with the zero with joiner character.

console.log(family.includes('πŸ‘¦'))
// do they have a son? returns true!

let familyWithTwoDoughters = family.replace('πŸ‘¦', 'πŸ‘§')
// we get this: πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘§
Enter fullscreen mode Exit fullscreen mode

Happily this is true not only about family emojis, but also for many emojies we may never use. Here is the technologist emoji (πŸ‘¨β€πŸ’») that is made of πŸ‘¨ and πŸ’»! After googling some stuff, I explored this file on Github:
https://github.com/unicode-org/icu/blob/main/icu4c/source/data/unidata/emoji-zwj-sequences.txt
that contains a long list of them.

An Emoji ZWJ Sequence is a combination of multiple emojis which display as a single emoji on supported platforms.

The formula is to combine multiple emojis using the zero width joiner character:
πŸ‘¨ + ZWJ + πŸ”¬ = πŸ‘¨β€πŸ”¬
🐻 + ZWJ + ❄ = πŸ»β€β„οΈ
🐈 + ZWJ + ⬛ = πŸˆβ€β¬›

You can play with them in Telegram or any other application that supports them. It is not as magical as some people may think and has nothing to do with JS. We can do all of this using PHP, and any programming language supports strings:

$family = 'πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦';
var_dump(mb_str_split($family));
Enter fullscreen mode Exit fullscreen mode

Thank you.

πŸ’– πŸ’ͺ πŸ™… 🚩
muhammadmp
Muhammad MP

Posted on April 26, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related