如何增加JavaScript对象中的值?

时间:2016-09-20 09:47:13

标签: javascript

var map = {};
map[key] = value;

我怎么能

  • 如果对象中尚不存在密钥,则赋值1
  • 如果存在,则将值增加1

我能做得比:

更好吗?
if (map[key] == null) map[key] = 0;
map[key] = map[key]++;

9 个答案:

答案 0 :(得分:13)

在这里,您可以最小化代码。

map[key] = (map[key]+1) || 1 ;

答案 1 :(得分:4)

您可以检查对象是否没有特定密钥并将其设置或将现有密钥值增加1:



function assignKey(obj, key) {
  typeof obj[key] === 'undefined' ? obj[key] = 1 : obj[key]++;
}

var map = {};

assignKey(map, 2);
assignKey(map, 2);
assignKey(map, 4);
assignKey(map, 1);
assignKey(map, 2);
assignKey(map, 5);
assignKey(map, 1);
console.log(map);




答案 2 :(得分:2)

ES6为地图Map提供专用课程。您可以轻松扩展它以构建“具有默认值的地图”:

class DefaultMap extends Map {

    constructor(defVal, iterable=[]) {
        super(iterable);
        this.defVal = defVal;
    }

    get(key) {
        if(!this.has(key))
            this.set(key, this.defVal);
        return super.get(key);
    }
}

m = new DefaultMap(9);
console.log(m.get('foo'));
m.set('foo', m.get('foo') + 1);
console.log(m.get('foo'))

(Ab)使用Objects as Maps有几个缺点,需要谨慎。

答案 3 :(得分:2)

最近可能是

map[key] = (map[key] ?? 0) + 1;

Nullish coalescing operator

答案 4 :(得分:2)

你可以像这样使用三元运算符

 map[key] ? map[key]++ : map[key] = 1;

答案 5 :(得分:0)

如果将数组的值转换为整数并增加它会更好。它将是强大的代码。 默认情况下,数组的值是字符串。所以,如果你没有将它转换为整数,那么它可能无法跨浏览器工作。

if (map[key] == null) map[key] = 0;
map[key] = parseInt(map[key])+1;

答案 6 :(得分:0)

function addToMap(map, key, value) {
    if (map.has(key)) {       
        map.set(key, parseInt(map.get(key), 10) + parseInt(value, 10));
    } else {
        map.set(key, parseInt(value, 10));
    }       
}

答案 7 :(得分:0)

创建对象:

    tagObject = {};
    tagObject['contentID'] = [];  // adding an entry to the above tagObject
    tagObject['contentTypes'] = []; // same explanation as above
    tagObject['html'] = [];

现在下面是我要添加到上述标签“对象”中的出现项。

ES 2015标准: function () {}() => {}

          let found = Object.keys(tagObject).find(
                (element) => {
                    return element === matchWithYourValueHere;
                });

          tagObject['occurrences'] = found ? tagObject['occurrences'] + 1 : 1;

这将增加特定对象键的数量。

答案 8 :(得分:0)

最短的代码是:

map[key] = ++map[key] || 1