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

/**
  * 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已经能够方便的遍历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);
 })
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值