一、Map是什麼?
Map是ES6引入的集合對象,用來保存鍵值對。相較於傳統的對象,Map的優勢在於:鍵可以是任何數據類型,包括對象;Map大小可以很方便的獲取;可以很快的遍歷它;可以根據指定條件過濾它;可以很方便的添加和刪除元素;可避免對象因引用而產生的錯誤等問題。
二、如何創建和修改Map的值?
創建Map只需要new一個Map對象來實現,其值為一個以數組為元素的集合;修改Map中指定key的值則需要使用set(key,value)方法,如果Map中沒有該key,則會添加一個元素;如果已經存在該key,則會更新對應的value值。另外一種替換value的方法是使用Map.prototype.set(key)方法,該方法的好處在於可以鏈式調用。
const myMap = new Map([ ['key1', 'value1'], ['key2', 'value2'] ]); // 使用set方法更新元素 myMap.set('key1', 'new value1'); // 使用set方法添加元素 myMap.set('key3', 'value3'); // 使用Map.prototype.set方法替換value值 myMap.get('key1').set('new value2');
三、如何高效率地對Map進行操作?
在操作Map時,如果沒有特殊的需求,應該盡量使用set()方法來更新或添加元素。如果需要遍歷Map中的元素,則建議使用for…of語句來遍歷,它比使用forEach方法要快。如果需要查詢特定元素,則可以使用Map.prototype.has(key)方法來判斷具有指定鍵名的元素是否存在於Map中,然後再進行其他邏輯操作。
const myMap = new Map([ ['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3'] ]); // 遍歷Map for (const [key, value] of myMap) { console.log(`${key}:${value}`); } // 查詢Map中具有指定鍵名的元素是否存在 if (myMap.has('key1')) { console.log('key1 is found.'); }
四、如何修改Map中某個指定key的值?
在修改Map中某個指定key的value時,可以直接使用set()方法來更新或添加元素。另外一種方法是直接將Map轉為數組,然後使用數組的map()方法完成修改操作。但是需要注意的是,轉為數組會造成額外的時間和空間複雜度,因此建議在某些特殊情況下才使用這種方法。
const myMap = new Map([ ['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3'] ]); // 使用set方法更新元素 myMap.set('key1', 'new value1'); // 轉為數組,使用map方法修改元素 const myArray = Array.from(myMap); const newArray = myArray.map(([key, value]) => { if (key === 'key2') { return [key, 'new value2']; } return [key, value]; }) const newMap = new Map(newArray);
五、完整代碼示例:
// 創建Map const myMap = new Map([ ['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3'] ]); // 使用set方法更新元素 myMap.set('key1', 'new value1'); // 使用set方法添加元素 myMap.set('key4', 'value4'); // 使用Map.prototype.set方法替換value值 myMap.get('key1').set('new value2'); // 遍歷Map for (const [key, value] of myMap) { console.log(`${key}:${value}`); } // 查詢Map中具有指定鍵名的元素是否存在 if (myMap.has('key1')) { console.log('key1 is found.'); } // 使用set方法更新元素 myMap.set('key2', 'new value2'); // 轉為數組,使用map方法修改元素 const myArray = Array.from(myMap); const newArray = myArray.map(([key, value]) => { if (key === 'key2') { return [key, 'new value2']; } return [key, value]; }) const newMap = new Map(newArray);
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/279155.html