Javascript js如何实现map[index]++;简洁地
对于数组,我可以使用Javascript js如何实现map[index]++;简洁地,javascript,dictionary,ecmascript-6,es6-map,Javascript,Dictionary,Ecmascript 6,Es6 Map,对于数组,我可以使用Array[index]++ 但是对于Map,我只知道Map.set(index,Map.get(index)+1) 我认为它看起来很糟糕,如果index是一个长名称函数,我必须将它分成两行 有没有更简洁的方法来实现map[index]++我只能推荐一个助手函数,比如 function update(map, key, fn) { return map.set(key, fn(map.get(key), key)); } update(table, index, i
Array[index]++
但是对于Map,我只知道Map.set(index,Map.get(index)+1)
我认为它看起来很糟糕,如果index
是一个长名称函数,我必须将它分成两行
有没有更简洁的方法来实现
map[index]++
我只能推荐一个助手函数,比如
function update(map, key, fn) {
return map.set(key, fn(map.get(key), key));
}
update(table, index, i=>i+1);
作业没有语法上的糖分,因此也没有速记作业
如果您的密钥是字符串,则可以使用带有适当陷阱的密码将更新伪装为属性访问
const mapMethods = {
has: Function.prototype.call.bind(Map.prototype.has),
get: Function.prototype.call.bind(Map.prototype.get),
set: Function.prototype.call.bind(Map.prototype.set),
};
function asObject(map) {
return new Proxy(map, mapMethods);
}
asObject(table)[index]++;
免责声明:请不要这样做。这很可怕。我只能建议一个助手函数,比如
function update(map, key, fn) {
return map.set(key, fn(map.get(key), key));
}
update(table, index, i=>i+1);
作业没有语法上的糖分,因此也没有速记作业
如果您的密钥是字符串,则可以使用带有适当陷阱的密码将更新伪装为属性访问
const mapMethods = {
has: Function.prototype.call.bind(Map.prototype.has),
get: Function.prototype.call.bind(Map.prototype.get),
set: Function.prototype.call.bind(Map.prototype.set),
};
function asObject(map) {
return new Proxy(map, mapMethods);
}
asObject(table)[index]++;
免责声明:请不要这样做。这很可怕。
有没有更简洁的方法
没有(不包括明显的-Map.prototype.incr=function(x){this.set(x,this.get(x)+1)}
)我想真正的问题是。。。为什么您需要使用像数组一样的映射对象呢?例如,计算每个项的num是否有更简洁的方法
no(不包括明显的-Map.prototype.incr=function(x){this.set(x,this.get(x)+1;}
)我认为真正的问题是。。。为什么需要使用像数组一样的映射对象?例如,计算每个项的num