2026年6月29日 星期一

關於 Map.getOrInsertComputed()

 關於 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()


相關文章與資料

關於 Map.getOrInsert()


沒有留言:

張貼留言