如何在JavaScript中快速获取Map对象的长度
为了在 JavaScript 中获取地图的长度,我们使用它的 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 属性存储对象中的键值对。
当 set() 方法添加元素并删除元素时, size 属性会相应更改。
当我们使用 set() 方法向映射添加新元素时,大小属性会增加 1。同样,当我们使用 delete() 从映射中删除元素时,大小属性会减少 1。
const map = new Map();
map.set(‘user1’, ‘John’);
console.log(map.size); // 1map.set(‘user2’, ‘Kate’);
console.log(map.size); // 2map.delete(‘user1’);
console.log(map.size); // 1
Map大小与Array长度
当然,映射和数组有不同的用途,但它们都有一个属性,用于给出其存储的项目的长度、数组的长度和映射的大小。
两者之间的一个关键区别是您可以直接更改数组的长度属性。
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() 等方法更改大小。
当您直接将数组长度更改为较小的值时,元素将被从末尾切掉。
const arr = [‘Pat’, ‘Matt’];
// 👇 Length decreased directly
arr.length = 1;// No more ‘Matt’
console.log(arr); // [‘Pat’]
另一方面,当您直接将数组长度更改为更大的值时,将从数组末尾添加空占位符元素:
const arr = [‘Pat’, ‘Matt’];
// 👇 Length increase directly
arr.length = 3;// Empty item added
console.log(arr); // [ ‘Pat’, ‘Matt’, <1 empty item> ]
虽然这有效,但我建议使用 Array splice() 从数组中删除元素,这样您就可以更好地控制删除并可以访问已删除的元素。
使用 splice(),您可以设置删除的起始索引、要删除的元素数量以及应插入其位置的新元素。
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 1const deleted2 = arr2.splice(1, 1, ‘John’);
console.log(deleted2); // [‘Matt’]
使用clear()方法清除Map
Map clear() 方法的作用从其名称中应该是非常明显的; 它清除了地图上的所有元素:
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
要点
要在 JavaScript 中获取地图的长度,请使用Map对象的 size 属性。
当您使用 set()、delete() 或clear() 添加或删除元素时,大小会更新。
与数组不同,您无法直接更改地图的大小。