有没有办法将值分配给对象的多个键而不重复对象名称?
例如:我们创建了这个对象:
var obj = {
"a": 0,
"b": 0,
"c": 0,
"d": 0
}
我现在想要的是为已经创建的这个对象的部分或全部键赋值(你通常会这样做):
obj["a"] = yourValue;
obj["c"] = yourValue;
obj["d"] = yourValue;
但没有重复对象名称,如上所述 有没有办法做这样的事情?
答案 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;
}