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