如何获取或设置JavaScript地图而不重复自己 我有一个用例,我想从地图上获取项目。如果该项目不存在,我想插入一个初始值并保存以备以后。我也想使用const变量,以便我不能

问题描述 投票:0回答:1
const

变量,以便我不能意外地重新定位本地。我知道我可以写自己的助手,但是在我看来,这种模式需要很多写作,我希望这很普遍:

const item = myMap.has(key) ? myMap.get(key) : myMap.set(key, initialize()).get(key);
或避免立即在

.get()

之后

.set()
有一种更简单的方法将项目从
const item = myMap.has(key) ? myMap.get(key) : (() => {const value = initialize(); myMap.set(key, value); return value})();

变量中获取,如果尚不存在,请先插入键的初始值?
我知道存在一个类似的问题,但是在这个问题中,没有要求将插入的项目存储在插入后的本地中,并且使用

Map

而不是
const
.

Edit:我走了实用程序路线,并创建了maputil.

	
我们可以稍微减少它,从而分解了
let
部分:

const ...但是我认为如果不引入新功能,我们不能走得更远。

javascript
1个回答
3
投票

.get(key)


是的,可能是实用程序功能的候选人。 :-)

standalOne:

const item = (myMap.has(key) ? myMap : myMap.set(key, initialize())).get(key);

...或者如果您可以在项目中扩展内置(对于某些项目而不是其他项目都可以):

const initialize = _ => 42; const myMap = new Map(); const key = "answer"; const item = (myMap.has(key) ? myMap : myMap.set(key, initialize())).get(key); console.log(item); console.log(Array.from(myMap.keys()));

我最喜欢的模式是:

const getOrAdd = (map, key, initializer) => { if (map.has(key)) { return map.get(key); } const value = initializer(); map.set(key, value); return value; }; const initialize = _ => 42; const myMap = new Map(); const key = "answer"; const item = getOrAdd(myMap, key, initialize); console.log(item); console.log(Array.from(myMap.keys()));

我喜欢这样,因为它排队了。
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.