var map = {};
map[key] = value;
我怎么能
我能做得比:
更好吗?if (map[key] == null) map[key] = 0;
map[key] = map[key]++;
答案 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)
答案 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