ES6 数组的循环

ES6笔记一
最近在系统的学习ES6,自己做的笔记,如有错误,还望订正,谢谢。
这篇主要介绍数组循环

//案例一    热闹的数组循环
  //1.数组的循环
      //1.1 forEach()  等同于for循环
      let  arr1=['spring','summer','autumn','winter']
      let a=arr1.forEach(function(val,index,arr){
          p=`我是值:${val},我是索引:${index},我是数组:${arr}`
          console.log(p)
      });
      console.log(a)   
      //注:结果为undefined,因为一个函数执行完没有返回值,默认为undefined,所以console.log(a)值为undefined
      //1.2  map() 需要配合return使用,不配合return使用等同于fonEach循环,可以用来整理数据
      let arr2=[
          {name:'小新',age:'5',like:'美女姐姐'},
          {name:'美冴',age:'29',like:'超级特惠'},
          {name:'小葵',age:'1',like:'珍珠'},
          {name:'广志',age:'29',like:'美女'},
          {name:'风间',age:'5',like:'可爱P'}
      ]
     let arr3= arr2.map(function(val,index,arr){
          let newObject={};
          newObject.name=`住在春日部${val.name}`;
          newObject.age=`年龄:${val.age}`;
          newObject.like=`爱好:${val.like}`
          return newObject;
      });
        console.log(arr3)
      //1.3  filter()  过滤  留下结果为true的值
      let arr4=[
      {name:'小新',age:'5',like:'美女姐姐'},
          {name:'美冴',age:'29',like:'超级特惠'},
          {name:'小葵',age:'1',like:'珍珠'},
          {name:'广志',age:'29',like:'美女'},
          {name:'风间',age:'5',like:'可爱P'}
    ]
    let D=arr4.filter((val,index,arr)=>{
        return val.age>15;
    });
    console.log(D)
    //切记.forEach()、.map() .filter() .some()  .every()等这些函数都有两个实参,那.forEach()举例:arr.forEach(function回调函数,this指向谁)
    //这里要注意function回调函数有三个参数function(val,index,arr),分别为:val是值,index是每项的索引,arr是数组;当回调函数,
    //写成箭头函数形式,要注意,this就指向的就是你定义函数所在的对象,例如函数定义所在对象是在window,那么this指向的就是window
    // function(){};   写成箭头函数是       ()=>{};
    //1.4  some() 类似与查找,当数组中数某一元素符合就返回true,无符合就返回false
    let arr5=['monday','tuseday','wednesday','turyday','friday']
    let e=arr5.some((val,index,arr)=>{
        return val=='friday';
    });
    console.log(e)
    //1.5  every()和some()类似,它要求每一项都符合才返回true,否则false
    let arr6=[2,5,7,9]
    // let arr6=[1,3,5,7,9]
    let f=arr6.every((val,index,arr)=>{
        return val%2==1;
    });
    console.log(f)
    //以上的几个比较类似,下面看这两个
    //1.6  reduce()可以用来求和,求阶乘,求幂次方,先说一下它的参数
    //reduce(prev,cur,index,arr) prev指是前一个元素,cur指的是当前元素,index是索引,arr是数组
    let arr7=[2,2,3]
    let g=arr7.reduce((prev,cur,index,arr)=>{
        //return Math.pow(prev,cur);  //表示a的n次方,prev是a,cur是n
        return prev**cur;   //a**n   也表示a的n次方,是ES2017新增的
    });
    console.log(g)
    //1.7  reduceRight() 和reduce()一样,只不过它是从右向左计算的
    let arr8=[2,2,3]
    let h=arr8.reduceRight((prev,cur,index,arr)=>{
        return prev**cur;
    });
    console.log(h);
    //for...of
    // 数组属性方法 arr.keys()获取索引,arr.entries获取数组每一项
    let arr9=['banana','apple','orange']
    for(let val of arr9){
        console.log(val);
    };
    for (let index of arr9.keys()){
        console.log(index)
    };
    for (let [key,val] of arr9.entries()){
        console.log(key,val)
    }

你可能感兴趣的:(IT开发)