三、ES5数组方法总结 ------ 2019-08-20

1、Array.forEach()方法:

// 作用:循环数组
let arr = [
    { title: 'aaaaa', read: 100, hot: true },
    { title: 'bbbb', read: 100, hot: true },
    { title: 'cccc', read: 100, hot: true },
    { title: 'dddd', read: 100, hot: true }
  ]

  arr.forEach((item, index, arr) => {
    console.log(index)
   // {title: "aaaaa", read: 100, hot: true} 0 (4) [{…}, {…}, {…}, {…}]
   // {title: "bbbb", read: 100, hot: true} 1 (4) [{…}, {…}, {…}, {…}]
   // {title: "cccc", read: 100, hot: true} 2 (4) [{…}, {…}, {…}, {…}]
   // {title: "dddd", read: 100, hot: true} 3 (4) [{…}, {…}, {…}, {…}]
  })
//  forEach()方法,用来遍历数组,该方法的回调函数接收三个参数:
(1)item:数组的每一项;
(2)index:数组当前项的索引;
(3)arr:原数组;
如果只传递一个参数,就是数组的每一项;

2、Array.map()方法:

// 作用:它返回一个新的数组,数组中的元素为原始数组调用函数处理后的值。
let arr = [
    { title: 'aaaaa', read: 100, hot: true },
    { title: 'bbbb', read: 100, hot: true },
    { title: 'cccc', read: 100, hot: true },
    { title: 'dddd', read: 100, hot: true }
  ]

  let newArr = arr.map((item, index, arr) => {
    console.log(item, index, arr);
  })
  console.log(newArr); //  [undefined, undefined, undefined, undefined]
(1)如果map()方法不return值,那么用法和forEach()方法相同,只是遍历数组,回调函数接收的参数也相同;
(2)如果map()方法不return值,那么默认return的是undefined;
(3)因此,平时我们使用map()方法,一定会return值;

3、Array.filter()方法:

作用:过滤数组,把return true的当前项返回,并构建一个新数组;
let arr = [
    { title: 'aaaaa', read: 100, hot: true },
    { title: 'bbbb', read: 100, hot: true },
    { title: 'cccc', read: 99, hot: true },
    { title: 'dddd', read: 100, hot: true }
  ]

  let newArr = arr.filter((item, index, arr) => {
    console.log(item, index, arr)
    return item.read >= 100;

  })
  console.log(newArr)
(1)filter()方法接收的参数和forEach()方法相同,回调函数接收的参数也相同;
(2)filter()函数的回调函数会把return true的项返回;

4、Array.some()方法:

作用:类似查找,  数组里面某一个元素符合条件,返回true
let arr = [
    { title: 'aaaaa', read: 100, hot: true },
    { title: 'bbbb', read: 100, hot: true },
    { title: 'cccc', read: 99, hot: true },
    { title: 'dddd', read: 100, hot: true }
  ]

  let newArr = arr.some((item, index, arr) => {
    console.log(item, index, arr)
    return item.read < 100;
  })
  console.log(newArr); // true
(1)some()方法的返回值只有true或者false两个选项;
(2)如果方法中没有return,那么返回的就是false;
(3)只要有一个符合条件,那么就会停止遍历,直接返回true;

5、Array.every()方法:

作用:和some()方法相似,数组里面所有的元素都要符合条件,才返回true
let arr = [
    { title: 'aaaaa', read: 100, hot: true },
    { title: 'bbbb', read: 100, hot: true },
    { title: 'cccc', read: 99, hot: true },
    { title: 'dddd', read: 100, hot: true }
  ]

  let newArr = arr.every((item, index, arr) => {
    console.log(item, index, arr)
    return item.read >= 99;
  })
  console.log(newArr);
(1)如果不return值,循环第一项后就立即停止,并且回调函数返回false;
(2)当所有选项都符合return后的条件时才会返回true,只要有一个不符合条件都会返回false;

6、Array.reduce()方法和Array.reduceRight():

作用:Array.reduce()方法从左向右遍历,求数组的和或者阶乘等;
           Array.reduceRight()方法从右向左遍历,求数组的和或者阶乘等;
let arr = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20];

let res = arr.reduce((prev, cur, index, arr) => {
  console.log(prev, cur, index, arr)
   return prev + cur;
});
console.log(res);
(1)该方法,从左向右遍历数组,接收四个参数:
         a.  prev,初始遍历时,是数组的第一项,余下每次prev的值都是return的结果,也就是前一项和当前项的处理结果; 
         b.  cur,是从第二项开始的数组的每一项的值;
         c.  index,cur的索引;
         d. arr,原数组;

你可能感兴趣的:(三、ES5数组方法总结 ------ 2019-08-20)