将值分配给多个键而不重复对象名称

时间:2017-11-29 09:17:46

标签: javascript

有没有办法将值分配给对象的多个键而不重复对象名称?

例如:我们创建了这个对象:

var obj = {
  "a": 0,
  "b": 0,
  "c": 0,
  "d": 0
}

我现在想要的是为已经创建的这个对象的部分或全部键赋值(你通常会这样做):

obj["a"] = yourValue;
obj["c"] = yourValue;
obj["d"] = yourValue;

没有重复对象名称,如上所述 有没有办法做这样的事情?

6 个答案:

答案 0 :(得分:6)

您可以使用Object.assign并将所需的键映射为值,作为具有所需值的更新的对象。



var object = { a: 0, b: 0, c: 0, d: 0 },
    value = 42,
    keys = ['a', 'c', 'd'];

Object.assign(object, ...keys.map(k => ({ [k]: value })));

console.log(object);




ES5



var object = { a: 0, b: 0, c: 0, d: 0 },
    value = 42,
    keys = ['a', 'c', 'd'];

keys.forEach(function (k) {
    object[k] = value;
});

console.log(object);




答案 1 :(得分:3)

  

但不像上面那样重复对象名称。

对象分配在这里可能会派上用场

Object.assign(obj, { a: 0,b:0,c:0 });

var obj = {
  "a": 0,
  "b": 0,
  "c": 0,
  "d": 0
}
Object.assign(obj, { a:1,b:0,c:1 });
console.log(obj)

答案 2 :(得分:1)

var obj = {
  "a": 0,
  "b": 0,
  "c": 0,
  "d": 0
};
yourvalue = 'test'
for(key in obj){
    obj[key] = yourvalue

}

for-in循环适合你。它循环遍历所有键条目,并允许您为其分配值。

答案 3 :(得分:0)

你不能没有迭代按键

var obj = {
  "a": 0,
  "b": 0,
  "c": 0,
  "d": 0
}

Object.keys(obj).forEach(k => {
  obj[k] = yourValue;
});

答案 4 :(得分:0)

可能会with对您有帮助,但

  

不建议使用with语句

答案 5 :(得分:0)

您可以使用键值创建一个数组,然后使用for循环。

var obj = {
  "a": 0,
  "b": 0,
  "c": 0,
  "d": 0
}
var arr = ["a", "b", "c", "d"];
for(var i = 0; i<arr.length; i++){
  obj[arr[i]] = yourValue;
}