我尝试使用 Javascript 或 Jquery 组合两个对象数组,但结果并不像我期望的那样。这些是我的数组对象结果:
Arry1 结果:[{"name": "2412"}, {"name": "3324"}, {"name": "8875"}]
Arry2 结果:[{"zip": "12051"}, {"zip": "54021"}, {"zip": "24521"}]
这就是我将一个插入另一个的方法:
Array.prototype.push.apply(Arry1,Arry2);
问题是上面的代码将它们堆叠在一起。我试图获取的对象结构如下:
[
{
"name": "2412",
"zip": "12051"
},
{
"name": "3324",
"zip": "54021"
},
{
"name": "8875",
"zip": "24521"
}
]
最佳答案
通过克隆并与Object.assign
组合来将数组相互映射
let a1 = [{"name": "2412"}, {"name": "3324"}, {"name": "8875"}];
let a2 = [{"zip": "12051"}, {"zip": "54021"}, {"zip": "24521"}];
let result = a1.map((props, index) => Object.assign(props, a2[index]));
console.log(result);
根据评论进行编辑:
如果这是一个您要经常与可变数量的数组一起使用的实用程序,您可以考虑创建一个处理它的函数。
let a1 = [{"name": "2412"}, {"name": "3324"}, {"name": "8875"}],
a2 = [{"zip": "12051"}, {"zip": "54021"}, {"zip": "24521"}],
a3 = [{"phone": "1234"},{"phone": "3121"},{"phone": "2136"}];
function combine(first, ...arrs) {
let result = first.map((props, index) => {
let combined = [props];
arrs.forEach(arr => combined.push(arr[index]));
return Object.assign(...combined);
})
return result;
};
let result = combine(a1, a2, a3);
console.log(result);
关于Javascript:如何将两个对象合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59994843/