DEV Community

Cover image for JS Plays With Emojis!
Muhammad MP
Muhammad MP

Posted on

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.

Top comments (4)

Collapse
 
mahdiyarghd profile image
MahdiyarGHD

Thank you for sharing this post. Keep up the great work!

Collapse
 
muhammadmp profile image
Muhammad MP

Thank you for reading my post! 😊

Collapse
 
ahmed_aarafa profile image
Ahmed Arafa

That's Funny and insightfulπŸ˜„

Collapse
 
muhammadmp profile image
Muhammad MP

We can think about a translator that translates a text to emojis! 😁