有了数组,我可以使用array[index]++
但有了地图,我只知道map.set(index,map.get(index)+1)
我认为它看起来很糟糕,如果index
是一个长名称函数,我必须将它分成两行。
有没有更简洁的实现方式map[index]++
有了数组,我可以使用array[index]++
但有了地图,我只知道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);
赋值没有语法糖,因此也没有简写赋值。
如果您的键是字符串,您可以使用Proxy
带有适当陷阱的 a 将更新伪装成属性访问。
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]++;
免责声明:请不要那样做。好吓人。