我有一个简单的问题。
这是我的代码,问题是当我运行一些emojis时,它会将它们显示为?,因为它会将表情符号切成两半。
angular.module('Joe.filters').filter("initials", function() {
return function(string) {
if (string) {
var words = string.split(" ");
if (words.length) {
string = words[0].charAt(0);
if (words[1]) {
string += words[1].charAt(0);
}
}
}
return string;
};
});
现在,我想是否可以用toArray解决这个问题,如果是的话,怎么样? 注意:如果我在控制台中运行"修复"与数组。
j = '';
""
j.length
2
s = _.toArray(j)
[""]
s.length
1
提前致谢!!
答案 0 :(得分:1)
在ES6中,.charAt
和[indexing]
仍可使用16位单位,但String.iterator
知道32位字符。因此,要提取可能超出平面0的第一个字符,您必须强制对字符串进行迭代,例如:
word = 'HELLO';
let b = [...word][0]
// or
let [c] = word
console.log(b, c)

另一种选择是提取第一个代码点并将其转换回字符:
let a = String.fromCodePoint(word.codePointAt(0))
要回答奖金问题,我在我的标准曲目中有这个相当重要的功能"
let first = ([a]) => a
使用此func,您的initials
逻辑可以写为
let initials = str => str.split(' ').slice(0, 2).map(first).join('')