如何增加JavaScript对象中的值?
问题描述:
var map = {};
map[key] = value;
我怎样才能如何增加JavaScript对象中的值?
- 分配值,如果关键还不在对象
- 递增1,如果它存在
我可以做的比更好的价值存在1:
if (map[key] == null) map[key] = 0;
map[key] = map[key]++;
答
您可以检查对象不具有特定的钥匙,并将其设置或由一个提高现有键值:
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),使用对象为地图有几个缺点,需要一些谨慎。
尝试if(typeof map [key] ===“undefined”)检查是否存在。通常情况下,你的地图中不存在的东西将是未定义的。不为null。 – klikas
难道你不能只用'hasOwnProperty'来检查你正在寻找的道具的存在吗? – DavidDomain