/** * 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); })
javascript中的Map和Set用法,以及for in,for of ,forEach循环用法
最新推荐文章于 2024-02-02 21:36:09 发布