微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在数组循环中的对象中添加元素

如何解决在数组循环中的对象中添加元素

我是JavaScript新手,我试图将两个数组中的两个对象合并在一起

一个数组

const TESTARRAY = [{
  id: 3,parameter1: 'x',parameter2: 'y',parameter3: 'z'
},{
  id: 1,parameter1: 'u',parameter2: 'v',parameter3: 'w'
},{
  id: 5,parameter1: 'q',parameter2: 'w',parameter3: 'e'
}]

第二个数组

var json = [{
  name: 'aaa'
},{
  name: 'ccc'
},{
  name: 'bbb'
}];

预期产量

[{
  additional: "aaa",id: 3,parameter1: "x",parameter2: "y",parameter3: "z"
},{
  additional: "ccc",id: 1,parameter1: "u",parameter2: "v",parameter3: "w"
},{
  additional: "bbb",id: 5,parameter1: "q",parameter2: "w",parameter3: "e"
}]

我在下面的JSfiddle中尝试过的代码试图循环var并将元素添加到TESTARRAY,但是我得到了相同的值“ bbb”,任何人都可以引导我寻求更好的方法

const TESTARRAY = [{
  id: 3,parameter3: 'e'
}]
var json = [{
  name: 'aaa'
},{
  name: 'bbb'
}];

for (var key in json) {
  if (json.hasOwnProperty(key)) {
    TESTARRAY.map(i => i.additional = json[key].name)
  }
}


console.log(TESTARRAY)

解决方法

假设要合并的两个数组的大小相同。 您可以简单地执行以下操作。

for (let i = 0; i < TESTARRAY.length; ++i)
{
    TESTARRAY[i] = {...json[i],...TESTARRAY[i]};
}
,

您可以将新数组与合并后的第二个数组的属性映射到同一索引。

const
    array1 = [{ name: 'aaa' },{ name: 'ccc' },{ name: 'bbb' }],array2 = [{ id: 3,parameter1: 'x',parameter2: 'y',parameter3: 'z' },{ id: 1,parameter1: 'u',parameter2: 'v',parameter3: 'w' },{ id: 5,parameter1: 'q',parameter2: 'w',parameter3: 'e' }],merged = array1.map(({ name: additional },i) => ({ additional,...array2[i] }));

console.log(merged);
.as-console-wrapper { max-height: 100% !important; top: 0; }

,

map的第二个参数是当前项目的index,您可以使用它来引用json变量。

const TESTARRAY = [{
    id: 3,parameter1: "x",parameter2: "y",parameter3: "z"
  },{
    id: 1,parameter1: "u",parameter2: "v",parameter3: "w"
  },{
    id: 5,parameter1: "q",parameter2: "w",parameter3: "e"
  }
];
var json = [{
    name: "aaa"
  },{
    name: "ccc"
  },{
    name: "bbb"
  }
];

const newTestArray = TESTARRAY.map((curr,index) => ({
  additional: json[index].name,...curr
}));

console.log(newTestArray);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。