5-1数组热闹的循环

2018-04-03  本文已影响0人  谷子多

注意
1、以下5个方法的参数都一样,第一个是回调函数,第二个参数是改this指向。
2、用箭头函数的语法要注意一下:this指向的是当前定义函数所在的对象!!!

一、 arr.forEach(),代替普通for循环,形式更简单

和for循环区别 :

  • 1.在固定长度或长度不需要计算的时候for循环效率高于foreach.
  • 2.在不确定长度,或计算长度有性能损耗的时候,用foreach比较方便.
  • 3.并且foreach的时候会锁定集合中的对象.期间不能修改.
  • 4.for 循环每次循环会调用 GetCount() 来比较长度. 而 foreach 不考虑长度,只调用一次GetList().
  let arr = ['苹果','香蕉','橘子'];
  arr.forEach(function(val,index){
    console.log(val,index) //苹果 0 香蕉 1 橘子 2
  })

二、 arr.map():“映射”,原数组被“映射”成对应新数组。

非常有用,做数据交互‘映射’。正常情况下,需要配个return,返回的是一个新的数组,如果没有return,就相当于forEach。
注意:一定要用return

  let arr = [
    {title : 'aaa',read : 100,hot : true},
    {title : 'bbb',read : 200,hot : false},
    {title : 'ccc',read : 300,hot : true},
    {title : 'ddd',read : 400,hot : true},
  ];
          
  let newArr = arr.map((item,index)=>{
    let json = {};
    json.t = item.title;
    json.r = item.read;
    return json
  })

  console.log(newArr) //[{'t':'aaa',r:100},{}....]

三、arr.filter():“过滤”、“筛选”.返回过滤后的新数组。如果回调函数返回true,就留下来

  let arr = [
    {title : 'aaa',read : 100,hot : true},
    {title : 'bbb',read : 200,hot : false},
    {title : 'ccc',read : 300,hot : false},
    {title : 'ddd',read : 400,hot : true},
  ];
          
  let newArr = arr.filter((item,index)=>{
    return item.hot
  })

  console.log(newArr) // [{title : 'aaa',read : 100,hot : true},{title : 'ddd',read : 400,hot : true}]

四、 arr.some():是否“某些项”合乎条件。返回true,与下面的every算是好基友。

let arr = [
  {title : 'aaa',read : 100,hot : true},
  {title : 'bbb',read : 200,hot : false},
  {title : 'ccc',read : 300,hot : false},
  {title : 'ddd',read : 400,hot : true},
 ];
                      
  let newArr = arr.some((item,index)=>{
    return item.hot
  })

  console.log(newArr) // true

五、 arr.every():返回Boolean值,必须每一项都符合条件


六、arr.reduce()

reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。

七、arr.reduceRight():从右到左

八、for...of

  1. 这是最简洁、最直接的遍历数组元素的语法
  2. 这个方法避开了for-in循环的所有缺陷
  3. 与forEach()不同的是,它可以正确响应break、continue和return语句
  let arr = ['苹果','梨','香蕉'];

  for (const key in arr) {
    console.log(arr[key])
  }
上一篇下一篇

猜你喜欢

热点阅读