javascript - 如何使用扩展运算符(ES6)根据对象的 id 合并对象列表
问题描述
假设我有两个对象列表,
list1 = [{id: 1, name: "tom", age:25}, {id: 2, name: "brad", age:35}, {id: 3, name: "marry", age:23}]
和
list2 = [{id: 1, OS: "Windows"}, {id: 2, OS: "Mac"}];
我如何获得
finalList = [{id: 1, name: "tom", age:25, OS: "Windows"}, {id: 2, name: "brad", age:35, OS: "Mac"}, {id: 3, name: "marry", age:23}
如果可能的话,我想使用扩展运算符来实现这一点,处理列表长度不同且某些对象没有 id 的场景。
解决方案
您可以使用.map()
返回新结果list1
并.find()
从中获取对应list2
的元素list1
:
let list1 = [{id: 1, name: "tom", age:25}, {id: 2, name: "brad", age:35}, {id: 3, name: "marry", age:23}];
let list2 = [{id: 1, OS: "Windows"}, {id: 2, OS: "Mac"}];
let result = list1.map(x => {
let l2 = list2.find(y => y.id === x.id);
return l2 ? { ...x, ...l2 } : x;
});
console.log(result);
推荐阅读
- excel - 基于对齐方式排序
- docker - Hadoop 连接被拒绝,Docker 上的高可用性名称节点配置
- python - 连接两个 pandas 数据框进行分析
- javascript - 如何在一个 ajax 请求中添加文件和 html 类型数据
- javascript - 更改 HTML 内容后为 DIV 设置动画
- javascript - 输入字段中的连接符号
- oracle - 使用一个表作为另一个表计算的参考点
- javascript - 使用猫鼬将元素添加/删除到对象的 id 数组中
- forms - android中隐藏的涟漪效应 - Xamarin Forms
- spring-boot - Which is a better approach to persist the spring state machine context or restore the state machine using the state enum on entity object?