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

JavaScript中如何获取两个对象数组的差异元素value值集合

最优实现方案

我们的核心需求是筛选出origArr中存在、但newArr中不存在的元素对应的value值,优先选择时间复杂度更低的实现方案:

高性能推荐方案(时间复杂度O(n+m))

利用Set的O(1)查找特性,避免嵌套遍历带来的性能损耗,适合数组长度较大的场景:

let origArr = [ { value: 2, label: 'Dog' }, 
                { value: 4, label: 'Cat' },
                { value: 16, label: 'Horse' } 
              ]

let newArr = [
  { value: 2, label: 'Dog' },
  { value: 3, label: 'Bird' },
  { value: 0, label: 'Fish' }
]

// 先提取newArr所有value存入Set
const newValSet = new Set(newArr.map(item => item.value))
// 遍历origArr筛选差异值
const diffArr = origArr.filter(item => !newValSet.has(item.value)).map(item => item.value)

console.log(diffArr) // 输出 [4, 16]

ES2016 对应实现方案

ES2016 新增了Array.prototype.includes方法,可直接用该方法实现,写法更简洁,适合数组长度较小的场景:

const newVals = newArr.map(item => item.value)
const diffArr = origArr.filter(item => !newVals.includes(item.value)).map(item => item.value)

两种方案都符合需求,且因为题目明确两个数组的value属性值均唯一,不需要额外做去重处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:06:06