[英]How to increment a value in a JavaScript object?
var map = {};
map[key] = value;
我怎样才能
我能做得更好吗:
if (map[key] == null) map[key] = 0;
map[key] = map[key]++;
在这里,您可以最小化您的代码。
map[key] = (map[key]+1) || 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);
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) 使用对象作为地图有几个缺点,需要谨慎。
你可以像这样使用三元运算符
map[key] ? map[key]++ : map[key] = 1;
如果将数组的值转换为整数并递增它会更好。 这将是健壮的代码。 默认情况下,数组的值为字符串。 因此,如果您不将其转换为整数,那么它可能无法跨浏览器工作。
if (map[key] == null) map[key] = 0;
map[key] = parseInt(map[key])+1;
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));
}
}
创建对象:
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;
这将增加特定对象键的计数..
最短的代码是:
map[key] = ++map[key] || 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.