如何在 JavaScript 中快速獲取 Map 對象的長度
為了在 JavaScript 中獲取Map的長度,我們使用它的size屬性,例如 console.log(map.size)。
const map = new Map();
map.set('user1', 'John');
map.set('user2', 'Kate');
map.set('user3', 'Peter');
// ?? Get length of map
console.log(map.size); // 3
Map size()、set() 和 delete() 方法
Map 對象的size屬性存儲(chǔ)對象中的鍵值對。
當(dāng) set() 方法添加元素并 delete() 刪除它們時(shí),size 屬性會(huì)相應(yīng)更改。
當(dāng)我們使用 set() 方法向地圖添加一個(gè)新元素時(shí),大小屬性會(huì)增加 1。同樣,當(dāng)我們使用 delete() 從地圖中刪除一個(gè)元素時(shí),大小會(huì)減少 1。
const map = new Map();
map.set('user1', 'John');
console.log(map.size); // 1
map.set('user2', 'Kate');
console.log(map.size); // 2
map.delete('user1');
console.log(map.size); // 1
Map size與Array length
當(dāng)然,映射和數(shù)組有不同的用途,但每個(gè)都有一個(gè)屬性,該屬性給出了它存儲(chǔ)的項(xiàng)目的長度、數(shù)組的長度和映射的大小。
兩者之間的一個(gè)關(guān)鍵區(qū)別是您可以直接更改數(shù)組的長度屬性。
const arr = [];
arr.push('Pat');
arr.push('Matt');
console.log(arr.length); // 2
// ?? Array length changed
arr.length = 1;
console.log(arr.length); // 1
但是你不能對地圖做同樣的事情:
const map = new Map();
map.set('user1', 'Pat');
map.set('user2', 'Matt');
console.log(map.size); // 2
map.size = 5;
// ?? length can't be modified directly
console.log(map.size); // 2
正如我們之前看到的,您只能使用 set() 和 delete() 等方法更改大小。
當(dāng)您直接將 Array 長度更改為較小的值時(shí),元素會(huì)被切掉。
const arr = ['Pat', 'Matt'];
// ?? Length decreased directly
arr.length = 1;
// No more 'Matt'
console.log(arr); // ['Pat']
另一方面,當(dāng)您直接將數(shù)組長度更改為更大的值時(shí),會(huì)從數(shù)組末尾添加空占位符元素:
const arr = ['Pat', 'Matt'];
// ?? Length increase directly
arr.length = 3;
// Empty item added
console.log(arr); // [ 'Pat', 'Matt', <1 empty item> ]
雖然這可行,但我建議 Array splice() 從數(shù)組中刪除元素,這樣您就可以更好地控制刪除并可以訪問已刪除的元素。
使用 splice() 您可以設(shè)置刪除的起始索引、要?jiǎng)h除的元素?cái)?shù)量以及應(yīng)該插入到它們位置的新元素。
const arr = ['Pat', 'Matt'];
// Delete 1 element at index 1 (2nd element)
const deleted = arr.splice(1, 1);
console.log(deleted); // ['Matt']
const arr2 = ['Pat', 'Matt'];
// Delete 1 element at index 1 (2nd element) and insert 'John' at index 1
const deleted2 = arr2.splice(1, 1, 'John');
console.log(deleted2); // ['Matt']
使用 clear() 方法清除地圖
Map clear() 方法的作用從它的名字中應(yīng)該很明顯; 它清除所有元素的地圖:
const map = new Map();
map.set('user1', 'John');
map.set('user2', 'Kate');
map.set('user3', 'Peter');
console.log(map.size); // 3
map.clear();
console.log(map.size); // 0
要點(diǎn)總結(jié)
- 要在 JavaScript 中獲取地圖的長度,請使用Map對象的 size 屬性。
- 當(dāng)您使用 set()、delete() 或 clear() 添加或刪除元素時(shí),size會(huì)更新。
- 與數(shù)組不同,您不能直接更改Map的size。