gpt4 book ai didi

javascript - 如何组合两个具有相同属性的对象-Javascript

转载 作者:行者123 更新时间:2023-11-28 17:18:53 27 4
gpt4 key购买 nike

我希望能够合并两个定义了相同属性/键的 JavaScript 对象。只是这些值不重复。例如我想:

    var obj1 = { 
0:{id: 33, name: 'abc', date: "12/12/12", type:"11" },
1: {id: 33, name: 'abc3', date: "12/13/12", type:"131"}
}
var obj2 = {
0:{id: 22, name: 'abc1', date: "12/1/13", type: "33" }
1:{id: 4, name: 'abc4', date: "12/4/12", type:"14"}
}

这是 fiddle :http://jsfiddle.net/q9c8k2yh/这是预期的结构:

enter image description here我希望 o/p 是:

var obj3 = {
0: { id: 33, name: 'abc', date: "12/12/12", type:"11" },
1: { id: 22, name: 'abc1', date: "12/1/13", type: "33" }
}

我查阅了网上的资料,得到的最常见的答案是:

Object.assign(obj2, obj1);

我已经尝试过:

obj3 = Object.assign(obj2, obj1);//returns { id: 33, name: 'abc', date: "12/12/12", type:"11" }
obj3 = Object.assign(obj1, obj2);//return { id: 22, name: 'abc1', date: "12/1/13", type: "33" }
obj3 = Object.assign({},obj2, obj1); //return { id: 33, name: 'abc', date: "12/12/12", type:"11" }

但他们都没有给我这两个对象。我不想用其中一个来代替另一个。有没有办法实现这个目标?

谢谢!

最佳答案

您所描述的看起来更像是一个数组而不是一个对象。但如果您想要一个带有数字键的对象,那么您可以这样做:

var obj1 = { id: 33, name: 'abc', date: "12/12/12", type:"11" }
var obj2 = { id: 22, name: 'abc1', date: "12/1/13", type: "33" }

let arr = [obj1, obj2]

// turn array into object:
let obj_all = {...arr}
console.log(obj_all)

新对象将保存对旧对象的引用。目前尚不清楚这是否是您所追求的,或者您是否想要克隆。

要制作克隆,您当然可以传播对象:

var obj1 = { id: 33, name: 'abc', date: "12/12/12", type:"11" }
var obj2 = { id: 22, name: 'abc1', date: "12/1/13", type: "33" }

let arr = [{...obj1}, {...obj2}]

let obj_all = {...arr}

// changes in original objects have no effect on clones
obj1.id="New Value"
console.log(obj_all)

关于javascript - 如何组合两个具有相同属性的对象-Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52863203/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com