var map = {};
map[key] = value;
Run Code Online (Sandbox Code Playgroud)
我怎么能够
我可以做得比:
if (map[key] == null) map[key] = 0;
map[key] = map[key]++;
Run Code Online (Sandbox Code Playgroud)
ric*_*cky 19
在这里,您将最小化您的代码.
map[key] = (map[key]+1) || 1 ;
Run Code Online (Sandbox Code Playgroud)
您可以检查对象是否没有特定键并设置它或将现有键值增加一:
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);Run Code Online (Sandbox Code Playgroud)
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'))Run Code Online (Sandbox Code Playgroud)
(Ab)使用对象作为地图有几个缺点,需要小心。
| 归档时间: |
|
| 查看次数: |
18165 次 |
| 最近记录: |