如果来自对象的相同键,则添加值

时间:2017-02-15 12:14:50

标签: javascript object key key-value

var obj = {
bob : 14
jan : 2
}

如果我添加到此对象,例如obj.bob =“12”, 有没有办法添加这个来制作bob:26而不是用bob替换它:12? 谢谢。

4 个答案:

答案 0 :(得分:4)

您可以使用ES6功能Proxy

  

Proxy对象用于定义基本操作的自定义行为(例如属性查找,赋值,枚举,函数调用等)。



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




答案 1 :(得分:1)

所以,你这样使用。

if(update.Message.Chat.Username == "xxxx" || update.Message.Chat.Username == "yyyy")
{
var req = new SendMessage(ChID, text) { ParseMode = SendMessage.ParseModeEnum.HTML, DisableWebPagePreview = true };
await bot.MakeRequestAsync(req);
var req2 = new SendMessage(update.Message.Chat.Id, "✅Your post was sent successfully.✅");
await bot.MakeRequestAsync(req2);
continue;
}

答案 2 :(得分:1)



var obj = {
  bob : 14,
  jan : 2
}

obj.bob += 12;
console.log(obj.bob)




答案 3 :(得分:0)

简单且几乎肯定正确的答案是使用addition assignment += operator,它将右操作数添加到左操作数。

obj.bob += 12; //obj.bob is now 26

可能希望拥有一个系统,其中设置assignment operator =的属性实际上会将该值添加到该属性的现有值中。这似乎令人困惑,不太可能有用,但在技术上可以使用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'

然而,我无法相信这可能是期望的行为。