您的位置:首页 > Web前端 > JavaScript

javascript中的Map和Set用法,以及for in,for of ,forEach循环用法

2015-09-29 11:44 746 查看
/**
* ES6及以上的浏览器支持Map和Set
* 和js对象不同,js对象的key部分必须为字符串,而Map的key可以为字符串、数字、null、""等
* 和java中的Map一样,重复放入key会覆盖一个对应的value
* **/
//创建方法一:直接用二维数组
var map = new Map([['java', 95], ['c', 75], ['python', 85]]);
//创建方法二:
var p = new Map();
//给map赋值
p.set("name","hello");
p.set(0.1,"131");
p.set("age",null);
p.set(null,"age");
p.set( "","11");
p.set("del","will be deleted");
console.log(p.get(null));//age
console.log(p.get(""));//11
console.log(p.get("name"));//hello
console.log(p.get('0.1'*1));//131
console.log(p.get("age"));//null
if(p.has("del")){
p.delete("del");//删除
}
console.log(p.get("del"));//undefined
/***
* Set:没有key,不能直接取值
* */
//创建Set方法一:直接赋初始值
var s1 =new Set(["a","b","c","c"]);
//创建Set方法二:用add('')添加参数
var set = new Set();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("e");
set.delete("c");
/***
*Map和Set的遍历问题:
*
***/
//for...in...循环:
var arr = [1,3,4];
//此处相当于给arr添加了一个叫attr的属性,原来的数组不变
arr.attr="abc";
for(var a in arr ){
console.log(a);//0 1 2
}
// for...of...循环:只能用于对数组,Map和Set遍历等属于iterable的集合.遍历对象报错
for(var a of arr){
console.log(a);//1 3 4
}
//可以看到for...in...循环得到的是下标,实际遍历的是属性名称,数组的下标作为属性
//所以遍历数组,Map,或者Set的值可以用 for...of...
var map2 = new Map([["name","hello"],["age",21],["sex","man"]]);
for(var a  of map2){
//发现a其实是个数组
console.log(a);
//进一步解析数组得到key和value部分
console.log("key="+a[0]+" value="+a[1]);
}
var set2 = new Set([1,"d",3]);
for(var a of set2){
console.log(a);
}
/***
* 使用for...in已经能够方便的遍
b509
历Map和Set或者Array
* 但是还有更加简洁的方法遍历,使用forEach,注意同样最好是ES6以上版本
* arr2.forEach(function(item,index,array){
*   迭代数组时候
*   item: 迭代的每一项元素
*   index: 元素下标
*   array:数组本身
*   })
* **/
var arr2 = [1,3,4];
arr2.forEach(function(item,index,array){
console.log("item: "+item+"  index: "+index+"  array: "+array);

})
var map3= new Map([["name","hello"],["age",21],["sex","man"]]);
//对于Map要两个参数就够了,注意第一个参数对应的是value而不是key
map3.forEach(function(value,key){//两个参数即可
console.log("key:"+key+"  value: "+value);
})
var set3 = new Set([1,"d",3]);
//Set只要一个参数就够
set3.forEach(function(item){
console.log("item:  "+item);
})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息