首页 > 解决方案 > 合并两个对象数组并添加一个新的键和值

问题描述

我有 2 个基于“Form_Name”键值的数组来合并一个添加了新键和值“isChecked”的数组。

阵列一

arrayOne = [
{id: 11, Form_Name: "form name One", isChecked: true}
{id: 11, Form_Name: "form name Two", isChecked: true}];

数组二

arrayTwo = [
{Form_Name: "form name One", Form_AddDate: "2019-05-15T11:03:18.05"}
{Form_Name: "form name Two", Form_AddDate: "2019-05-15T11:03:18.05"}
{Form_Name: "form name Three", Form_AddDate: "2019-05-15T11:03:18.05"}
{Form_Name: "form name Four", Form_AddDate: "2019-05-15T11:03:18.05"}];

预期的合并数组

mergedArray = [
{Form_Name: "form name One", Form_AddDate: "2019-05-15T11:03:18.05", isChecked: true}
{Form_Name: "form name Two", Form_AddDate: "2019-05-15T11:03:18.05", isChecked: true}
{Form_Name: "form name Three", Form_AddDate: "2019-05-15T11:03:18.05", isChecked: false}
{Form_Name: "form name Four", Form_AddDate: "2019-05-15T11:03:18.05", isChecked: false}]

我试过如下

const mergedArray = [];
for (let i = 0; i < arrayTwo.length; i++) {
  mergedArray.push({
   ...arrayTwo[i],
   ...(arrayOne.find((itmInner) => itmInner.Form_Name === arrayTwo[i].Form_Name))}
  );
}
console.log('merged array result', mergedArray);

标签: javascriptarrays

解决方案


 const hasChecked = new Set(arrayOne.map(it => it.Form_Name));

 const result = arrayTwo.map(it => ({ ...it, isChecked: hasChecked.has(it.Form_Name) }));

通过创建一组检查的表单名称,您可以轻松地映射到第二个对象数组,并添加一个isChecked属性。


推荐阅读