Javascript:如何将两个对象合并为一个

标签 javascript jquery

我尝试使用 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/

相关文章:

javascript - HTML 中的动态货币格式

javascript - 将脚本绑定(bind)到单选按钮: Weird Behaviour : Not Binding by Name

jquery - 使用 jQuery 触发 Click 事件

javascript - 根据正值或负值更改 div 类 - 值在 1/0/-1 之间的问题

javascript - 如何使用jquery检查全部和删除

javascript - 更改特定 jQuery UI 对象(selectmenu)的样式而不是全部

javascript - Javascript 中的站点地图 lastmod 日期

javascript - 将脚本动态注入(inject)文档时无法实例化类

php - jQuery 电子邮件没有文本/提交两次

javascript - gentelella Angular 管理面板 - gentelella 切换菜单和侧边栏单击事件不起作用