Skip to content

Instantly share code, notes, and snippets.

@perjo927
Created January 10, 2023 19:02
Show Gist options
  • Save perjo927/00e1cec8ee8ed873096f32ab4243e6a7 to your computer and use it in GitHub Desktop.
Save perjo927/00e1cec8ee8ed873096f32ab4243e6a7 to your computer and use it in GitHub Desktop.
Emoji fusion generators
const emoji = require('emoji-name-map')
// 1. Iterable object
const impersonator = {
genders: ['man', 'woman', 'adult'],
professions: [],
[Symbol.iterator]: function* () {
for (const profession of this.professions) {
for (const gender of this.genders) {
const professional = emoji.get(gender) + '\u200d' + emoji.get(profession)
yield professional
}
}
},
}
impersonator.professions = ['computer', 'school']
console.log([...impersonator])
// ["πŸ‘¨β€πŸ’»", "πŸ‘©β€πŸ’»", "πŸ§‘β€πŸ’»", "πŸ‘¨β€πŸ«", "πŸ§‘β€πŸ«"]
// 2. Generator function
function* getEmojiPersonGenerator(joiners) {
const genders = ['πŸ‘¨', 'πŸ‘©', 'πŸ§‘']
for (const joiner of joiners) {
for (const gender of genders) {
const professional = gender + '\u200d' + joiner
yield professional
}
}
}
const professions = ['πŸ’»', β€™πŸ«']
const emojiProfessionalGenerator = getEmojiPersonGenerator(professions)
console.log([...emojiProfessionalGenerator])
// ["πŸ‘¨β€πŸ’»", "πŸ‘©β€πŸ’»", "πŸ§‘β€πŸ’»", "πŸ‘¨β€πŸ«", "πŸ§‘β€πŸ«"]
// 3. FP
const genders = ['πŸ‘¨', 'πŸ‘©', 'πŸ§‘']
const professions = ['πŸ’»', '🏫']
const combineEmojis = (listA, listB) =>
listA.flatMap(typeA => listB.map(typeB => typeA + '\u200d' + typeB))
const emojis = combineEmojis(genders, professions)
console.log(emojis);
// ["πŸ‘¨β€πŸ’»", "πŸ‘©β€πŸ’»", "πŸ§‘β€πŸ’»", "πŸ‘¨β€πŸ«", "πŸ§‘β€πŸ«"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment