连接/合并两个对象数组

时间:2018-11-16 10:29:51

标签: javascript arrays node.js

我正在开发一个nodejs应用程序,需要将两个文档数组连接在一起。我有一个ID字段可用于加入,但不确定如何优雅地实现所需的输出。请参见下面的示例数组。

array 1
[{"id": 1,
  "name": "paul"
 },
{"id": 2,
  "name": "sarah"
 }
]

array 2
[{"id": 1,
  "email": "p@test.co.uk"
 },
{"id": 2,
  "email": "s@test.co.uk"
 }
]

output
[{"id": 1,
  "name": "paul",
  "email": "p@test.co.uk"
 },
{"id": 2,
  "name": "sarah",
  "email": "s@test.co.uk"
 }
]

2 个答案:

答案 0 :(得分:0)

您可以结合使用Object.assign方法和map函数来获得所需的输出。

对于map方法,您必须传递回调提供的函数作为参数,该函数将应用于给定array中的每个项目。

arr1 = [{"id": 1, "name": "paul" }, {"id": 2, "name": "sarah" } ], arr2 = [{"id": 1, "email": "p@test.co.uk" }, {"id": 2, "email": "s@test.co.uk" } ]

let final = arr1.map(function(item){
  return Object.assign(item, arr2.find(({id}) => id == item.id));
});

console.log(final);

或者直接使用arrow函数。

arr1 = [{"id": 1, "name": "paul" }, {"id": 2, "name": "sarah" } ], arr2 = [{"id": 1, "email": "p@test.co.uk" }, {"id": 2, "email": "s@test.co.uk" } ]

let final = arr1.map((item) => Object.assign(item, arr2.find(({id}) => id == item.id)));
console.log(final);

答案 1 :(得分:0)

您可以通过结合使用ES6 http://example.com/index.php?id=abc (if i clicked on http://example.com/Test/abc) mapfind来实现:

Object.assign

来源:Array.prototype.mapArray.prototype.findObject.assign