js循环的多种方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js对数组遍历的多种写法 以及Map和Set数据格式</title>
</head>
<!--
        1.for()
        2,for in   用来循环对象
        3,forEach()   //用来循环数组,不能break,不能return
        4,map()  返回一个新的数组 和forEach相似
        5,filter()  过滤
        6,for of      map对象循环,也可以循环数组,性能高。
         -->
<body>
<script>
   let arr = [1,2,5,6,7,8];
   let arrs=[];
   let arrays={name:"hanna",age:"18"};
   let arrarsObj=[{name:"hanna"},{name:"zhangsan"},{name:"lisi"}];

//    for(let i=0;i<arr.length;i++){//1,只能对数组进行操作
//        arrs.push(arr[i]+1)
//    }


//   arr.forEach(function (val,index) {//其实就是用来代替for的!//循环数组,和map相似,不同是前者不能break和return
//      console.log(val+1);//数组值
//      console.log(index);//数组下标
//   })


//   for(let key in arrays){//1,可对象进行循环  for in遍历的是数组的索引,通常用for in 遍历对象的键名  //不建议对数组进行for in遍历,
//       console.log(key);//对象的key值
////       console.log(array[key]);//对象的val
//   }

//   for(let key in arrays){//for in 加强版  对象进行循环,但是for in 可以遍历原型方法,所以建议在使用的时候,加个判断,如果是实例对象就操作,不遍历原型对象。
//       if(arrays.hasOwnProperty(key)) {//判断是否属于对象实例方法
////           console.log(key);//对象的key值
////       console.log(arrays[key]);//对象的val
//           console.log(key);//对象的val
//       }
//   }


//   arr.map(function (val,index) {//为每个元素执行一定的操作,并返回一个新的数组//循环数组,不会对原数组有影响,可以return,会返回一个新的数组。可以链式操作。
////       console.log(val);//数组值
//    console.log(index);//数组下标
//   })//



// var a = arrarsObj.filter(function (item,index, array) {// filter 遍历 创建一个新的匹配过滤条件的数组。//是对数组进行操作,返回一个新的数组,不会对原数组有影响。
////       return item.name==="hanna"
//        return index===1;
//        return array;
//   });
// console.log(a);
//    console.log(arrs);




   //Set有2中创建方式
   let sets=new Set();//1,第一种
   let setss=new Set([1,2,4,"hanna","2",2]);//第二种,
   sets.add("hanna",);
   sets.add("zhang").add("li").add("li").delete("li");
   //Set的属性和方法
   //   sets.add() , sets.delete(), sets.has(),sets.size,sets.clear(),Array.from(setss)取参数的使用也需要用has()去取。
   //   console.log(Array.from(setss));//可以把set类型转化为对象类型
   //   console.log(sets);


   //Map数据类型 2种创建方式
   let m = new Map();//1,第一种
   let map = new Map([["name", "小明"], ["title", "Author"]]);//第二种,初始化Map对象是一个二维数组。
   m.set("edition"); // 键是字符串,值是空
   m.set(262, "stan"); // 键是数字,值是stan
   m.set(undefined, "nah").delete(262);//键是undefined,值是nah
   //Map的属性和方法
   //1,m.set(key,val)设置一个键值对,m.size返回总成员,m.get(key)读取这个键,m.has(key),m.delete(key),clear()清除所有成员



   //循环遍历,结合for of
   //for  of 遍历   可遍历Map 和Set
   //   for(let [key,val] of map){//单个key和单个val
   //       console.log("key:"+ key);
   //       console.log("val:"+ val);
   //   }

   //   for(let key of map.keys()){//只循环于key
   //       console.log("key:"+ key);//
   //   }

   //   for(let val of map.values()){//只循环与val
   //       console.log("val:"+ val);//
   //   }

   //   map.forEach(function (val,key,map) {
   //       console.log(key);
   //       console.log(val);
   //       console.log(map);
   //   })


   //   1,for of 遍历的数组的值,并非下标
   //    for(let i of "1234567"){
   //       console.log(i);
   //  }
   }



</script>
</body>
</html>

推荐阅读更多精彩内容