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

如何对JavaScript对象数组去重并移除指定子串元素,可否异步一行实现

实现代码

同步最优实现(推荐)

该场景为纯内存计算,本身不需要异步逻辑,同步写法性能更高,单句即可完成:

const res = [...new Set(arr.filter(i => !i.Element.includes('mhh.chs.com')).map(i => i.Element))].map(e => ({Element: e}))

异步单句实现(满足异步格式要求)

如果必须用异步写法,直接用Promise包装同步逻辑即可,同样单句完成:

const asyncRes = await Promise.resolve([...new Set(arr.filter(i => !i.Element.includes('mhh.chs.com')).map(i => i.Element))].map(e => ({Element: e})))

逻辑说明

  • 时间复杂度为O(n),属于最优效率方案:先单次遍历过滤掉所有含mhh.chs.com的元素,提取邮箱值存入Set完成去重,最后重新组装为原对象结构,无需多次遍历数组
  • 同步方案没有异步开销,性能优于异步包装的版本,除非你需要将该逻辑放入微任务队列执行,否则优先用同步版本
  • 最终输出结果为:[{"Element":"email@gmail.com"},{"Element":"email2@yahoo.com"}],完全符合要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:27:01