Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js如何实现map[index]++;简洁地_Javascript_Dictionary_Ecmascript 6_Es6 Map - Fatal编程技术网

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