javascript - 根据与不同数组中对象的属性匹配的值,为数组中的每个对象添加属性
问题描述
我有两个对象数组:
const arr1 = [ {key: '12', name: 'john'}, {key: '9', name: 'steve'}, {key: '4', name: 'harry'}, {key: '2', name: 'jane'} ];
const arr2 = [ {key: '12', age: '29', gender: 'm'}, {key: '9', age: '43', gender: 'm'}, {key: '4', age: '19', gender: 'm'}, {key: '2', age: '65', gender: 'f'} ];
arr1
将始终包含与 相同数量的对象arr2
,并且key
属性将始终保持一致,例如在上面的示例'12', '9', '4', '2'
中,两个数组中都存在键。
我正在寻找一种有效的方法来将name
每个对象的属性添加到具有相同键属性值arr1
的对象中。arr2
以上是一个简化的示例,在我的用例中,两个数组都可能包含 300 多个对象。
预期结果:
arr3 = [ {key: '12', age: '29', gender: 'm', name: 'john'}, {key: '9', age: '43', gender: 'm', name: 'steve'}, {key: '4', age: '19', gender: 'm', name: 'harry'}, {key: '2', age: '65', gender: 'f', name 'jane'} ];
我可以通过一个嵌套循环来实现这一点,该循环遍历 in 中的每个对象arr1
并检查 in 中的每个对象arr2
,但想知道是否有一种简化/更有效的方法使用最新版本的 ECMAScript 中的一些函数(我仍然学习)。
解决方案
假设 arr1 和 arr2 总是相同的长度并按它们的键排序,你可以这样做:
let arr3=arr2;
for (let i = 0;i<arr1.length;i++){
arr3[i].name=arr1[i].name;
}
我这样做的输出:
[
{ key: '12', age: '29', gender: 'm', name: 'john' },
{ key: '9', age: '43', gender: 'm', name: 'steve' },
{ key: '4', age: '19', gender: 'm', name: 'harry' },
{ key: '2', age: '65', gender: 'f', name: 'jane' }
]
推荐阅读
- c++ - 类模板 - 如何编写构造函数
- typescript - 使用 express.Route() 部署 Firebase Cloud 函数时出错
- swift - 为什么在 swift 的 mac 命令行工具中使用 DispatchQueue.main.async 时需要运行循环?
- c# - 使用openxml的ppt中的段落没有更改为所需的格式
- google-cloud-platform - 数据科学/工程(开发/生产)环境
- ubuntu - 当我在本地运行命令时未加载 ssh-agent
- x86 - 不同的ISA二进制分析结果矛盾
- vue.js - 未更新的组件列表
- python - 如何缩放数据框中的所有数据,但一列
- javascript - 为什么打字稿接口函数没有函数名?