JavaScript如何根据数组元素在对象数组中查找匹配对象
代码实现方案
首先先修正你给出的原始代码里的语法错误:
- 第二个数组重复命名为
array1,实际应为array2 = [3,4] - 每个对象里的
age属性后多打了一个冒号,不符合JS语法 - 你贴的预期结果里
array2的内容和array1完全重复,常规匹配逻辑下应该对应值为3、4的对象条目,下面的实现先按「数组元素匹配对象a属性值」的通用逻辑编写,如果你确实需要array2返回和array1相同的结果,调整下筛选条件就行。
具体实现用数组filter方法搭配includes判断即可,代码如下:
// 基础数据定义(修正语法错误后) const array1 = [1, 2] const array2 = [3, 4] const arrayOfObj = [ {a: 1, age: 20, name: 'Thomas'}, {a: 2, age: 14, name: 'Farida'}, {a: 3, age: 35, name: 'James'}, {a: 4, age: 67, name: 'Hellen'}, ] // 筛选匹配逻辑 const res1 = arrayOfObj.filter(item => array1.includes(item.a)) const res2 = arrayOfObj.filter(item => array2.includes(item.a))
运行后得到的返回结果:
// res1 对应array1的匹配结果 [ {a:1, age: 20, name: 'Thomas'}, {a:2, age: 14, name: 'Farida'} ] // res2 对应array2的匹配结果 [ {a:3, age: 35, name: 'James'}, {a:4, age: 67, name: 'Hellen'} ]
要是你需要array2返回和你示例里一样的和array1相同的内容,只需要把res2的筛选条件改成
array1.includes(item.a)就行。
内容的提问来源于stack exchange,提问作者Zizo
相关产品推荐
相关产品推荐

