前言
工欲善其事,必先利其器。这是一款以前在前端项目中没有使用过的、有趣的对象,咱来看看如何使用~
并非arrayObj.map(function)
//arrayObj.map与arrayObj.forEach方法类似 [].map(function(itemValue, itemIndex, array) { // ... });
Map()
介绍
集合中的键和值可以是任何类型。如果使用现有密钥向集合添加值,则新值会替换旧值。
var mp = new Map();
clear 从映射中移除所有元素。 delete 从映射中移除指定的元素。 forEach:mapObject.forEach(function(value,key,mapObject){}[, thisArg]) 对映射中的每个元素执行指定操作。 get 返回映射中的指定元素。 has 如果映射包含指定元素,则返回 true。 set 添加一个新建元素到映射。 toString 返回映射的字符串表示形式。 valueOf 返回指定对象的原始值。
使用
var users = new Map(); users.set("johnny",{name:'johnny',age:23,sex:'M'}); users.set("jane",{name:'jane',age:21,sex:'F'}); users.set("mary",{name:'mary',age:24,sex:'F'}); //1.mapObject.forEach users.forEach(function(key,users){ console.log(key); }); //2.mapObject的values如何遍历 var iter = users.values(); var values = new Array(); var item = null; while((item=iter.next()).done!=true){//还未遍历完 values.push(item.value); item=null; } values.forEach(function(val,idx,array){ console.log("["+idx+"] "+JSON.stringify(array[idx])); });
兼容性
IE8+
推荐文献
[1] Js中的Map对象
[2] 修改IE不兼容MAP()的问题,自定义实现JavaScript的Map对象
[3] Map - Mozilla