我在寫一個函數,它接受一個字符串,通過使用.split
方法將字符串轉換爲數組來搜索emojis ,該函數然後根據數組值查找emoji值,並在找到匹配項時返回一個字符串。當所有完成後,我們.join
我們的數組創建一個字符串。object使用Array.split,Array.filer和Array.map格式化字符串後的字符串對象
所以取,例如當前字符串使用表情符號(我得到這個從用戶輸入):
我喜歡搖滾
在我的組件上面的字符串是this.message
,這裏是我的代碼:
emojiLookup() {
let splitMessage = this.message.split(/([\uD800-\uDBFF][\uDC00-\uDFFF])/g);
this.message = splitMessage.map((a) => {
if(this.isItemEmoji(a)) {
return this.emojiList.filter((em) => { // this.emojiList is an array list to match the emoji value to a keyword
if(this.emojiToUnicode(a) === em.unicode) {
return (em.aliases[0]); // this value is a string e.g. 'smile'
}
});
} else {
return a;
}
}).join('');
console.log(this.message);
}
this.emojiLookup(this.message);
// helper methods used abive
isItemEmoji(s:string) {
return /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g.test(s);
}
emojiToUnicode(emoji: any) {
if(emoji){
return '\\u' + emoji.charCodeAt(0).toString(16) + '\\u' + emoji.charCodeAt(1).toString(16);
}
}
現在,一切似乎當我輸出我的轉換this.message
我得到然而工作如下:
I like ro[object Object]ck and roll [object Object][object Object]
我還沒有一個線索,爲什麼[object Object]
的出現而不是字符串我從return (em.aliases[0])
回?我檢查了return (em.aliases[0])
的值,它總是一個字符串...我做錯了什麼?
我在我的Angular2應用程序中使用TypeScript。 lodash也可用。
啊!!!天哪!你是對的!我不需要過濾器!我在想什麼? –