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
分享到:
相关推荐
前端开源库-es6-promise-poolES6 Promise池,在限制并发性的池中运行Promise。
前端开源库-es6-promisify-allES6 Promisify all,Promisify整个对象
ES6新特性---变量的定义let、const!自己整理的资源,给大家分享!资源分数没有0,没办法!只能设置是1
canal同步ES,解决druid类型转换失败问题,重新打包 client-adapter.es6x-1.1.5-jar-with-dependencies.jar , 放到canaladapter的plugin目录覆盖即可
es6笔记---学习这些就够了---精简
| 英语 ES6代理Polyfill 这是ES6 Proxy的polyfill,支持IE6 + ,Node.js等。 到目前为止,它比GoogleChrome的支持更多功能。... script src =" path/to/es6-proxy-polyfill.js " type =" text/javascript " > <
es6-arrow-function, shorthand 箭头函数编译为 ES5. es6-arrow-function 编译使用箭头函数编写的JavaScript以使用ES5-compatible函数语法。 例如:[1, 2, 3].map(n => n * 2);编译为:[1, 2, 3
angular-es6-skeleton-源码.rar
在es6多行字符串中添加了对代码的语法突出显示支持: ...只需在字符串之前插入注释/ * html * /或html (或sql而不是html)(有关可能的值,请参见“要求”部分),或从命令菜单中选择Insert es6-string-h
ES6-DBC-308的工程文件
npm install --save-dev html-es6-template-loader 要在webpack.config.js上设置此加载器: module: { rules : [ { test : / \. html $ / , use : [ 'html-es6-template-loader' ] } , ] , } 模板可能看...
前端开源库-es6-module-packagerES6模块打包机,ES6模块链接工具。
前端开源库-es6-sass-skes6 sass sk、es6和sass入门工具包,用于在任何浏览器上构建可运行的javascript es6/sass项目
2024年最新前端面试题大全
Atom-react-native-redux-snippets-es6-es7-atom.zip,用于react native、react、redux和用于atom编辑器的es6/es7的代码段库react-native-redux-snippets-es6-es7-atom,atom是一个用web技术构建的开源文本编辑器。
es6-promise-polyfill es6-promise 的自动 polyfill 版本,promise 随心所欲!用法将其嵌入到[removed]标签中,并与 ES6 Promise 相同使用。 。
es6-module-transpiler-dist-formatter ES6 模块转译器扩展到输出分发包格式。 用法 构建工具 由于此格式化程序是 [es6-module-transpiler] 的插件,您可以将它与任何现有的支持 [es6-module-transpiler] 作为底层...
JavaScript --- ES6 涵盖(ES6 -- ES11)语法学习
es6-module-transpiler-globals-formatter ES6 模块转换器扩展以将导出的内容输出为全局变量。 安装 $ npm install --save-dev es6-module-transpiler-globals-formatter 用法 只需将formatter键设置为...
javascript ES6标准 前端开发资源