欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ES6 数组的循环

程序员文章站 2024-02-14 18:53:40
...

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)
    }