快速复制对象键的方法,但具有不同的值?

时间:2017-10-11 08:25:15

标签: javascript node.js

说我有这样一个对象:

object_1 = {
  a: 10,
  b: 5,
  c: 15
};

有没有快速创建另一个只有相同键的对象,比如?

object_2 = {
  a: 0,
  b: 0,
  c: 0
}

我知道Object.keys(object_1)给了我一个带键的数组,但我不知道如何将它们作为新对象中的键分配。

object_2 = Object.assign({}, Object.keys(object_1))

如果我能以某种方式反转那个可行的数组:D

3 个答案:

答案 0 :(得分:4)

您可以将Object.assign与映射对象和spread syntax ...以及computed property names一起使用。



var object1 = { a: 10, b: 5, c: 15 },
    object2 = Object.assign(...Object.keys(object1).map(k => ({ [k]: 0 })));

console.log(object2);




答案 1 :(得分:2)

您可以使用Array#reduce迭代对象的键,并创建一个新对象:



var object_1 = {
  a: 10,
  b: 5,
  c: 15
};

var object_2 = Object.keys(object_1).reduce((o, k) => (o[k] = 0, o), {});

console.log(object_2);




答案 2 :(得分:2)

您可以使用上面的1961Unbound droplist创建一个具有相同键和初始值的新对象,如下所示(这是没有箭头功能和其他与ES6相关的传播操作符)



.reduce