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

JS中如何判断对象数组某属性是否包含另一个数组的所有元素

需求说明

你需要验证纯值数组的所有元素,都存在于对象数组的指定id属性中,对应测试数组如下:

// 待提取id的对象数组
let array1 = [
    {id: 123, name: "Name of item"},
    {id: 456, name: "Other name"}
]
// 待匹配的纯值数组
let array2 = [123, 456]

解法1:小数据量场景(代码最简)

适合两个数组长度都不大的场景,一行代码即可实现:

const isAllExist = array2.every(targetId => array1.some(item => item.id === targetId))
  • 逻辑说明:
    • every方法会校验array2的所有元素,只有全部元素都满足判断条件才会返回true
    • some方法遍历array1,只要找到一个id匹配的元素就返回true
  • 注意:该方法时间复杂度为O(n*m)(n为array2长度,m为array1长度),数据量过大时性能较低。

解法2:大数据量场景(性能更优)

利用Set的O(1)查找特性优化性能,整体时间复杂度为O(n+m):

// 先提取array1所有id生成Set集合
const idSet = new Set(array1.map(item => item.id))
// 逐一校验array2的元素是否都在Set中
const isAllExist = array2.every(targetId => idSet.has(targetId))

在你给出的示例数组中,最终isAllExist的输出结果为true。

内容的提问来源于stack exchange,提问作者Josué Orozco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:42:03