You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除字符串中不在指定对象内的所有表情符号?

实现JavaScript表情过滤函数:保留指定允许的表情

需求:移除字符串中所有不在allowedEmojis对象内的表情符号,非表情字符全部保留,仅保留对象中包含的表情。

完整实现代码

let allowedEmojis = {
  '😀': 50,
  '😂': 150,
  '🥳': 500
};

function filterEmojis(str) {
  // 将允许的表情转为Set,提升查找效率
  const allowedEmojisSet = new Set(Object.keys(allowedEmojis));
  // 拆分字符串为单个Unicode字符(兼容多码点表情)
  return Array.from(str).filter(char => {
    // 保留规则:允许的表情 或 非表情字符
    return allowedEmojisSet.has(char) || !/[\p{Emoji}]/u.test(char);
  }).join('');
}

let str = "Helloo 😀😂🥳😡";
str = filterEmojis(str);

console.log(str); // 输出:Helloo 😀😂🥳

关键实现说明

  • Set优化查找:把允许的表情存入Set,比直接使用对象属性查找更高效,尤其适合大量表情的场景
  • Unicode字符拆分:使用Array.from(str)确保正确拆分包含复杂表情(如代理对字符)的字符串,避免拆分错误
  • 表情判断逻辑:通过Unicode属性正则/[\p{Emoji}]/u准确识别表情字符,该正则支持ES2018及以上环境
  • 过滤规则:仅移除「不在允许列表中的表情」,所有非表情字符不受影响

内容的提问来源于stack exchange,提问作者Troxi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 01:00:56