Created
January 10, 2023 19:02
-
-
Save perjo927/00e1cec8ee8ed873096f32ab4243e6a7 to your computer and use it in GitHub Desktop.
Emoji fusion generators
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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