如何获取对象的所有属性并将其插入其自己的对象数组属性?

时间:2018-11-23 22:01:10

标签: javascript

例如,我想要类似的东西:

{ 
  a: 1,
  b: 2,
  c: 3
}

变成了:

{
  d: { 
       a: 1,
       b: 2,
       c: 3
     }
}

我尝试使用对象本身为该对象分配新属性,但是它显示为圆形,因此我认为它是引用,而不是实际属性,而不是实际值。我想尝试类似JSON.stringify的对象并将其分配给属性,但是我不知道如何将字符串转换为可以分配给属性的对象格式。

3 个答案:

答案 0 :(得分:2)

let firstObj = { 
  a: 1,
  b: 2,
  c: 3
}

let secondObj =  {};
secondObj.d = firstObj;
console.log(secondObj);

基本上,您将创建一个新对象,并将原始对象分配给其属性d

答案 1 :(得分:1)

您可以使用ES6解构来制作对象的浅表副本并将其放在新的道具上:

let obj = { 
    a: 1,
    b: 2,
    c: 3
}
obj.d = {...obj}

console.log(obj)

如果这不是一个选项,则可以在对象键上reduce()创建一个新对象并将其分配给d

let obj = { 
    a: 1,
    b: 2,
    c: 3
}

obj.d = Object.keys(obj).reduce((newObj, k) => {
    newObj[k] = obj[k]
    return newObj
},{})

console.log(obj)

答案 2 :(得分:0)

这取决于您是要复制对象d的深拷贝还是浅拷贝。 (对象d可以具有嵌套结构吗?)

有关here的有效克隆对象方法的问题。