如何解决在数组循环中的对象中添加元素
我是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 举报,一经查实,本站将立刻删除。