EcmaScript 6 新对象 Map()
来源:互联网 发布:查看矢量图的软件 编辑:程序博客网 时间:2024/06/07 09:12
Map
对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
语法:
new Map([iterable])
参数 iterable 可以是一个数组或者其他 iterable 对象,其元素或为键值对,或为两个元素的数组。 每个键值对都会添加到新的 Map。null 会被当做 undefined。
示例:
使用映射对象:
var myMap = new Map(); var keyObj = {}, keyFunc = function () {}, keyString = "a string"; // 添加键myMap.set(keyString, "和键'a string'关联的值");myMap.set(keyObj, "和键keyObj关联的值");myMap.set(keyFunc, "和键keyFunc关联的值"); myMap.size; // 3 // 读取值myMap.get(keyString); // "和键'a string'关联的值"myMap.get(keyObj); // "和键keyObj关联的值"myMap.get(keyFunc); // "和键keyFunc关联的值" myMap.get("a string"); // "和键'a string'关联的值" // 因为keyString === 'a string'myMap.get({}); // undefined, 因为keyObj !== {}myMap.get(function() {}) // undefined, 因为keyFunc !== function () {}
将NAN作为映射的键:
NaN
也可以作为Map对象的键. 虽然 NaN
和任何值甚至和自己都不相等(NaN !== NaN
返回true), 但下面的例子表明, 两个NaN
作为Map的键来说是没有区别的:
var myMap = new Map();myMap.set(NaN, "not a number");myMap.get(NaN); // "not a number"var otherNaN = Number("foo");myMap.get(otherNaN); // "not a number"
使用 for...of 循环进行迭代映射:var myMap = new Map();myMap.set(0, "zero");myMap.set(1, "one");for (var [key, value] of myMap) { console.log(key + " = " + value);}// 将会显示两个log。一个是"0 = zero"另一个是"1 = one"for (var key of myMap.keys()) { console.log(key);}// 将会显示两个log。 一个是 "0" 另一个是 "1"for (var value of myMap.values()) { console.log(value);}// 将会显示两个log。 一个是 "zero" 另一个是 "one"for (var [key, value] of myMap.entries()) { console.log(key + " = " + value);}// 将会显示两个log。 一个是 "0 = zero" 另一个是 "1 = one"
使用forEach()方法进行迭代映射:
myMap.forEach(function(value, key) { console.log(key + " = " + value);}, myMap)// 将会显示两个logs。 一个是 "0 = zero" 另一个是 "1 = one"
映射与数组对象的关系:var myArray = [["key1", "value1"], ["key2", "value2"]];// 使用映射对象常规的构造函数将一个二维键值对数组对象转换成一个映射关系var myMap = new Map(myArray);myMap.get("key1"); // 返回值为 "value1"// 使用展开运算符将一个映射关系转换成一个二维键值对数组对象console.log(uneval([...myMap])); // 将会向您显示和kvArray相同的数组// 或者使用展开运算符作用在键或者值的迭代器上,进而得到只含有键或者值得数组console.log(uneval([...myMap.keys()])); // 输出 ["key1", "key2"]
英文源网页:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map 阅读全文
0 0
- EcmaScript 6 新对象 Map()
- ECMAScript 6 新特性
- ECMAScript 6新特性
- ECMAScript 6新特性介绍
- ECMAScript 6新特性介绍
- ECMAScript 6新特性简记
- ECMAScript 6新特性简记
- ECMAScript 6新特性简记
- ECMAScript 6新特性简记
- ECMAScript 6新特性简记
- ECMAScript 6新特性简记
- ECMAScript 6 的新特性
- ECMAScript 6 入门--Promise 对象
- ECMAScript 6之Set和Map数据结构
- ECMAScript 对象
- ECMAScript对象
- ECMAScript 6 中的 String 新特性
- ECMAScript 6新特性之Proxy
- XML学习1_xpath路径表达式笔记
- 集合类(HashSet)
- linux 防止ssh暴力破解的方法
- 快速计算某一天是星期几-蔡勒公式
- innodb下的记录锁,间隙锁,next-key锁
- EcmaScript 6 新对象 Map()
- python高级1:面向对象进阶
- AfxGetModuleState() 与 AfxGetModuleThreadState()
- 【亲测有效】Windows下安装Python的wordcloud
- 回到起点,重新出发
- Android 修改状态栏和标题栏颜色
- leetcode Edit Distance
- 计算机原理图,pcb
- 回流与重绘