如果来自对象的相同键添加值
Add Value if Same Key from Object
var obj = {
bob : 14
jan : 2
}
如果我添加到这个对象,比如obj.bob = "12",
有没有办法添加它来制作 bob : 26 而不是用 bob: 12 替换它?
谢谢你。
所以,你用这种方式。
var obj = {
bob : 14,
jan : 2
}
obj.bob += 12;
console.log(obj);
var obj = {
bob : 14,
jan : 2
}
obj.bob += 12;
console.log(obj.bob)
您可以使用 ES6 功能,Proxy
The Proxy
object is used to define custom behavior for fundamental operations (e.g. property lookup, assignment, enumeration, function invocation, etc).
var obj = { bob: 14, jan: 2 },
p = new Proxy(obj, {
set: function(target, prop, value) {
target[prop] = (target[prop] || 0) + value;
}
});
p.bob = 10;
console.log(p.bob); // 24
p.jane = 42;
console.log(p.jane); // 42
简单且几乎肯定正确的答案是使用 addition assignment +=
operator,它将右操作数添加到左操作数。
obj.bob += 12; //obj.bob is now 26
您可能想要一个系统,其中设置 属性 与 assignment operator =
actually adds the value to the property's existing value. This seems confusing and unlikely to be helpful, but it is technically possible using Object.defineProperty
:
let _bob = 14;
Object.defineProperty(obj, 'bob', {
set(newValue) {
_bob += Number(newValue);
},
get() {
return _bob;
}
});
obj.bob = 12;
console.log(obj.bob); // logs '26'
然而,我不敢相信这可能是理想的行为。
var obj = {
bob : 14
jan : 2
}
如果我添加到这个对象,比如obj.bob = "12", 有没有办法添加它来制作 bob : 26 而不是用 bob: 12 替换它? 谢谢你。
所以,你用这种方式。
var obj = {
bob : 14,
jan : 2
}
obj.bob += 12;
console.log(obj);
var obj = {
bob : 14,
jan : 2
}
obj.bob += 12;
console.log(obj.bob)
您可以使用 ES6 功能,Proxy
The
Proxy
object is used to define custom behavior for fundamental operations (e.g. property lookup, assignment, enumeration, function invocation, etc).
var obj = { bob: 14, jan: 2 },
p = new Proxy(obj, {
set: function(target, prop, value) {
target[prop] = (target[prop] || 0) + value;
}
});
p.bob = 10;
console.log(p.bob); // 24
p.jane = 42;
console.log(p.jane); // 42
简单且几乎肯定正确的答案是使用 addition assignment +=
operator,它将右操作数添加到左操作数。
obj.bob += 12; //obj.bob is now 26
您可能想要一个系统,其中设置 属性 与 assignment operator =
actually adds the value to the property's existing value. This seems confusing and unlikely to be helpful, but it is technically possible using Object.defineProperty
:
let _bob = 14;
Object.defineProperty(obj, 'bob', {
set(newValue) {
_bob += Number(newValue);
},
get() {
return _bob;
}
});
obj.bob = 12;
console.log(obj.bob); // logs '26'
然而,我不敢相信这可能是理想的行为。