首页 > 解决方案 > JS如何获取2个数组对象之间的匹配ID

问题描述

如何使用 javascript 在 2 个数组对象之间获取 2 个匹配的 id?

// Array 1
const array1 = [
  {id: 1, name: 'milla'},
  {id: 2, name: 'alice'}
]

// Array 2
const array2 = [
  {id: 3, name: 'bobba', height: '170cm', age: 22},
  {id: 2, name: 'alice', height: '169cm', age: 21},
  {id: 1, name: 'milla', height: '171cm', age: 24},
  {id: 4, name: 'ricky', height: '168cm', age: 32},
]

预期的输出是返回 Array2 的对象数组,该数组与 array1 上的 id 匹配

// expected result
[
  {id: 2, name: 'alice', height: '169cm', age: 21},
  {id: 1, name: 'milla', height: '171cm', age: 24},
]

标签: javascriptarraysobject

解决方案


您可以过滤并查看是否id存在相同的内容。

const
    array1 = [{ id: 1, name: 'milla' }, { id: 2, name: 'alice' }],
    array2 = [{ id: 3, name: 'bobba', height: '170cm', age: 22 }, { id: 2, name: 'alice', height: '169cm', age: 21 }, { id: 1, name: 'milla', height: '171cm', age: 24 }, { id: 4, name: 'ricky', height: '168cm', age: 32 }],
    hash = array1.reduce((r, { id }) => (r[id] = true, r), {}),
    filtered = array2.filter(({ id }) => hash[id]);

console.log(filtered);


推荐阅读