關於 Map.getOrInsertComputed()
前言
在上次的 關於 Map.getOrInsert() 介紹 Map.getOrInsert(), Map 還提供另一個類似的函式 Map.getOrInsertComputed() ,在此把學習的過程做個紀錄。
內容
範例如下
let map = new Map();
map.set( 'A' , 1234 );
map.set( 'B' , 5678 );
//
console.log( map.getOrInsertComputed( 'C' , (value) => `New key ${value} is inserted.` ) );//New key C is inserted.
//
let insertCon = 0 ;
let callDefaultValue = (value) => {
console.log(`New key ${value} is inserted.insertCon:${insertCon}`);
return insertCon++;
};
map.getOrInsertComputed( 'D' , callDefaultValue);//New key D is inserted.insertCon:0
map.getOrInsertComputed( 'E' , callDefaultValue);//New key E is inserted.insertCon:1
Map.getOrInsert() 和 Map.getOrInsertComputed() 最大的差異是第二的引數,Map.getOrInsert() 插入的是固定值,但 Map.getOrInsertComputed() 是輸入一個函式來插入值,範例的 'C' 值直接示範如何插入,但直接使用不方便插入變數,所以範例的 'D' 與 'E' 先把函式存在變數,這樣就可以每次插入都用同一個函式,接著可以看到函式會在每次喚起後增加 indertCon,所以每次插入後顯示的 insertCon 會不一樣。
參考資料
[ developer.mozilla.org ] Map.prototype.getOrInsertComputed()