代码之家  ›  专栏  ›  技术社区  ›  budi TheMrP

使用扩展语法从包含表情符号的字符串中过滤空字符串

  •  2
  • budi TheMrP  · 技术社区  · 7 年前

    我试着保持时尚,所以我一直在玩 spread operator 和表情符号。我注意到当我想 filter '' )在生成的“扩散”数组中,没有删除空字符串。为什么?

    console.log([...'😀︎']);                 // ['😀︎', '']
    console.log([...'😀︎'].filter(String));  // ['😀︎', '']
    console.log(['😀︎', ''].filter(String)); // ['😀︎']
    1 回复  |  直到 7 年前
        1
  •  4
  •   trincot Jakube    7 年前

    字符串中有一个不可见字符,它是一个 variation selector

    console.log([...'😀︎'].map(s => s.charCodeAt(0)));

    如果你的目标是删除 variation selector 15 replace :

    s.replace(/\ufe0e/g, '')
    

    filter 不会排除它。

    split ,得到两个单独的字符(JavaScript的一个历史奇点),它们表示UTF编码。如果您的目标是计算字符串中的表情符号(和其他高范围字符),则可以使用以下代码:

    console.log(s.split('').length - [...s].length);