var map = {};
map[key] = value;
我怎樣才能如何增加JavaScript對象中的值?
- 分配值,如果關鍵還不在對象
- 遞增1,如果它存在
我可以做的比更好的價值存在1:
if (map[key] == null) map[key] = 0;
map[key] = map[key]++;
var map = {};
map[key] = value;
我怎樣才能如何增加JavaScript對象中的值?
我可以做的比更好的價值存在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