javascript - 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},
]
解决方案
您可以过滤并查看是否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);
推荐阅读
- android - 无法使用下载管理器下载文件
- reactjs - 反应 event.target.value.slice() 未定义的行为?
- scala - Swagger - 为什么 Swagger 在我没有为其编写注释时创建请求正文字段?
- pandas - 在 Plotly 图表上编辑构面标题
- linux-kernel - 两个节点之间的设备树依赖关系
- gooddata - 如何使用 gooddata-js 找到“本地标识符”以执行 AFM 功能
- python - Python - 使用字典更新或插入到 sqlite
- java - java.lang.IllegalArgumentException:插件已经初始化
- macos - 除了 AppleScript 之外,还有其他方法可以在 macOS 中获取前景窗口标题吗
- lua - 脚本不工作,声音不播放,砖不变色