ES6 中的 Map 类型的用法详解
在 ES6 中,新增了一种集合类型——Map,它类似于对象,但是比对象更强大、灵活,提供了更多的方法和功能,是前端开发中必须掌握的一种数据结构。
Map 对象是一组键值对的集合,其中每个键唯一对应一个值。与其他数据结构不同的是,Map 的键可以是任意类型的值,包括基本类型和对象、函数等复杂类型。Map 的键值对也没有数量上的限制,可以动态地添加和删除键值对。
Map 的基本使用方法
Map 对象的创建和操作方式都比较简单,可以通过以下方式创建一个 Map 对象:
const myMap = new Map();
可以使用 set() 方法向 Map 中添加键值对:
myMap.set('name', 'Jack'); myMap.set('age', 18); myMap.set('gender', 'male');
使用 get() 方法可以获取指定键对应的值:
console.log(myMap.get('name')); // Jack console.log(myMap.get('age')); // 18 console.log(myMap.get('gender')); // male
使用 has() 方法可以判断 Map 中是否存在某个键:
console.log(myMap.has('name')); // true console.log(myMap.has('height')); // false
使用 delete() 方法可以删除 Map 中的某个键值对:
myMap.delete('age'); console.log(myMap.get('age')); // undefined
使用 clear() 方法可以清空 Map 中的所有键值对:
myMap.clear(); console.log(myMap.size); // 0
Map 的高级使用方法
Map 的高级用法包括批量添加键值对、迭代遍历键值对、使用对象作为键、使用 Map 嵌套等操作。
- 批量添加键值对:
可以使用数组来批量添加键值对:
const myMap = new Map([ ['name', 'Jack'], ['age', 18], ['gender', 'male'] ]);
- 迭代遍历键值对:
使用 for...of 循环可以遍历 Map 对象中的所有键值对:
for (let [key, value] of myMap) { console.log(key, value); } // "name" "Jack" // "age" 18 // "gender" "male"
Map 还提供了 keys()、values() 和 entries() 三种遍历方法,分别返回 Map 中所有的键、值和键值对,并且这些方法返回的结果都是可迭代对象。例如可以使用 keys() 方法遍历 Map 中所有的键:
for (let key of myMap.keys()) { console.log(key); } // "name" // "age" // "gender"
- 使用对象作为键:
Map 的键可以是任意类型的值,甚至可以使用对象作为键。因为对象是引用类型,每个对象引用的内存地址是不同的,所以即使两个对象的属性完全相同,它们也不相等。这就使得对象在 Map 中可以作为键,实现灵活的存储和查找。
-- -------------------- ---- ------- ----- ----- - --- ------ ----- ---- - - ----- ------ -- ----- ---- - - ----- ----- -- --------------- --- --------------- --- ----------------------------- -- - ----------------------------- -- -
- 使用 Map 嵌套:
Map 可以作为值存储在另一个 Map 中,实现多层嵌套。这种结构在某些场景下非常有用,比如树形结构的存储和遍历。
const myMap = new Map(); const childMap1 = new Map([['name', 'Alice'], ['age', 10]]); const childMap2 = new Map([['name', 'Bob'], ['age', 12]]); myMap.set('001', childMap1); myMap.set('002', childMap2); console.log(myMap.get('001').get('name')); // Alice console.log(myMap.get('002').get('age')); // 12
总结
Map 对象是一种键值对集合,可以存储任意类型的键和值,并支持动态添加、删除、遍历等操作。通过掌握 Map 的基本用法和高级用法,可以实现灵活、高效的数据存储和查找,达到更好的开发效率和代码质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6533665b7d4982a6eb6edf54