map数据结构类似于对象,也是
键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
var m = new Map();
m.set("edition", 6) // 键是字符串
m.set(262, "standard") // 键是数值
m.set(undefined, "nah") // 键是undefined
属性和方法:
size:返回成员总数。
set(key, value):设置key所对应的键值,然后返回整个Map结构。如果key已经有值,则键值会被更新,否则就新生成该键。
get(key):读取key对应的键值,如果找不到key,返回undefined。
has(key):返回一个布尔值,表示某个键是否在Map数据结构中。
delete(key):删除某个键,返回true。如果删除失败,返回false。
clear():清除所有成员,没有返回值。
只有
对同一个对象的引用,Map结构才将其视为同一个键。Map的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。解决了同名属性碰撞(clash)的问题。
var map = new Map();
var k1 = ['a'];
var k2 = ['a'];
map.set(k1, 111);
map.set(k2, 222);
map.get(k1) // 111
map.get(k2) // 222
Map的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map将其视为一个键。
let map = new Map();
map.set(NaN, 123);
map.get(NaN) // 123,NaN不严格相等于自身,但Map将其视为同一个键
map.set(-0, 123);
map.get(+0) // 123
三个遍历器:
keys():返回键名的遍历器。
values():返回键值的遍历器。
entries():返回所有成员的遍历器。
let map = new Map([
['F', 'no'],
['T', 'yes'],
]);
for (let key of map.keys()) {
console.log(key);
}
// "F" "T"
for (let value of map.values()) {
console.log(value);
}
// "no" "yes"
for (let item of map.entries()) {
console.log(item[0], item[1]);
}
// "F" "no" "T" "yes"
// 或者
for (let [key, value] of map.entries()) {
console.log(key, value);
}
// 等同于使用map.entries()
for (let [key, value] of map) {
console.log(key, value);
}
扩展:
http://www.cnblogs.com/ziyunfei/archive/2012/10/10/2717754.html
分享到:
相关推荐
9. **Set和Map数据结构**:Set提供了不重复元素集合,Map则是键值对的集合,两者都提供了更丰富的操作接口。 10. **默认参数、剩余参数与扩展运算符**:默认参数允许在函数定义时设定默认值,剩余参数允许将多个...
在ES6(ECMAScript 2015)中,Map是一种新的数据结构,它解决了JavaScript对象作为键值对集合时,键只能是字符串的限制。Map允许任何类型的值(包括对象)作为键,这极大地扩展了键的使用范围,使得存储和检索复杂...
9. **Map 和 Set**:新引入的数据结构,提供了更灵活的键值对存储和唯一元素集合。 10. **Proxy 和 Reflect**:用于创建代理对象,可以拦截并定制对象的访问行为,以及提供更底层的面向对象操作。 通过这个工作坊...
ES6 中引入了 Set 和 Map 两种新的数据结构,Set 用于存储唯一元素,Map 用于存储键值对。 Promise Promise 是 ES6 中的一种新的异步编程模型,允许开发者更方便地处理异步操作。 Class Class 是 ES6 中的一种新...
8. **Set和Map数据结构**:Set存储不重复值,提供了集合操作的便利;Map则是键值对的存储结构,键可以是任意类型,比Object更灵活。 9. **Proxy和Reflect**:Proxy用于创建一个代理对象,可以拦截并修改对象的各种...
《ES6标准入门 第3版》是一本深入探讨JavaScript ES6新特性的权威指南,针对JavaScript开发者,尤其是希望提升技术水平和理解最新语言标准的程序员。本书详细介绍了自ES6(ECMAScript 2015)发布以来的一系列重要...
`Map`和`Set`是ES6新增的数据结构,分别用于存储键值对和不重复元素: ```javascript // Map 示例 const map = new Map(); map.set('key1', 'value1'); console.log(map.get('key1')); // 输出 'value1' // Set ...
9. **Set和Map数据结构**:Set存储不重复值,Map则为键值对,两者提供了更丰富的集合操作,弥补了原生Array和Object的不足。 10. **WeakSet和WeakMap**:与Set和Map类似,但它们存储的引用不会阻止垃圾回收,适用于...
- 遍历 Map 结构。 - 输入模块的指定方法。 ##### 3. **模板字符串** ES6 引入了一种新的字符串类型——模板字符串,使用反引号 (``` ` ```) 来定义。模板字符串支持多行文本和变量嵌入。 - **示例**: ```...
- **迭代器和for-of循环(Iterators and for-of Loops)**:迭代器是一种新的遍历方式,for-of循环是一种遍历可迭代对象(如数组、字符串、Map和Set)的语法结构。 - **Map和Set**:新增的集合类型,Map类似于对象...
* Map是ES6中引入的一种新的数据结构,可以用来存储键值对。 * Set是ES6中引入的一种新的数据结构,可以用来存储唯一的值。 Iterator * Iterator是ES6中引入的一种新的迭代方式,可以用来迭代对象。 * Iterator...
ES6引入了Set和Map两个新的数据结构。Set用于存储不重复的值,而Map用于存储键值对。它们可以用于实现更加高效的数据处理和存储。 7. ES6 Reflect 与 Proxy ES6引入了Reflect和Proxy两个新的API。Reflect用于提供...
9. **Set 和 Map 数据结构** Set和Map分别提供了不重复元素集合和键值对存储,弥补了数组和对象的不足。 10. **默认参数、剩余参数与扩展运算符** 函数参数可以设置默认值,剩余参数(...rest)可以收集不定数量...
#### 五、Set和Map数据结构 - **Set**:用于存储唯一的值集合。 - **创建**: ```javascript let set = new Set([1, 2, 3]); ``` - **操作**: ```javascript set.add(4); // 添加元素 set.delete(2); // ...
集合(Sets)和映射(Maps)是ES6中新增的两种数据结构。集合存储唯一的元素,而映射则是一种键值对的数据结构。这两种数据结构都提供了更高效的操作方法。 **示例:** ```javascript const set = new Set([1, 2, ...
此外,ES6还引入了Set和Map数据结构,以及WeakSet和WeakMap,这些新的数据类型增强了语言的表达能力和数据操作的灵活性。 ES6的学习和应用过程中,开发人员应当注意一些进阶知识点,比如异步编程的深入理解,包括...
Set和Map是ES6中的新数据结构,用于存储唯一值和键值对。Promise对象(Promises)是一种处理异步操作的现代方式,它代表一个最终会完成或失败的操作。模块(Modules)是ES6中的一大特性,它允许开发者将代码分割成可...
9. **Set & Map 数据结构** - `Set` 不允许重复元素,提供集合操作。 - `Map` 键值对存储,键可以是任意类型,提供了高效查找。 10. **迭代器(Iterator)** - 提供了一种统一的遍历数据结构的方法,如 `for......
ES6还引入了新的数据结构,如`Map`、`Set`等,这些数据结构在处理复杂数据时比传统的数组和对象更加高效。在彩票系统中,可以利用这些新的数据结构来优化数据存储和查询性能,提升用户体验。 ### 总结 通过“ES6...