关于数据的遍历方法

forEach
forEach遍历完整,不会中断,在其内部使用return也只是起到continue的作用,仅跳过当前这条
arr.forEach((item, index, arr1) => {
...
})

 

 

map

map 遍历完整,不中断,返回新数组
const map1 = arr.map(x => x * 2); // 返回一个arr值的二倍数组, [1,2,3] => [2,4,6]

 

filter

filter遍历完整,不中断,返回新数组判断是true作为新数组的单元
const map1 = arr.map(x => x>2); // 返回一个arr值的二倍数组, [1,2,3,5, 6, 7] => [3,5,6,7]

 

find

find找到第一个符合条件,中断,返回一个值   , 没找到就是undefined
const map1 = arr.find(x => x>2); // 返回一个值, [1,2,3,5, 6, 7] => 3

 

findIndex

find找到第一个符合条件,中断,返回一个索引   , 没找到就是undefined
const map1 = arr.findIndex(x => x>2); // 返回一个值, [1, 2, 3, 5, 6, 7] => 2

 

includes

includes 是否包含一个指定的值。它返回一个布尔值true/false。
const map1 = arr.includes(3); // 是否含有3, [1,2,3,5, 6, 7] => true

some

some 找到第一个符合条件中断。它返回一个布尔值true/false。
const map1 = arr.map(x => x>2); // 是否含有大于2的值, [1,2,3,5, 6, 7] => true

 

every

every 遍历完整,不中断。它返回一个布尔值true/false。
every 都符合条件,返回一个true;否则,返回一个false
const map1 = arr.map(x => x>2); // 是否都大于2, [1,2,3,5, 6, 7] => false

 

reduce

 

array.reduce(function(acc, cur, idx, src), initval)
reduce 遍历完整,不中断。汇总为单个返回值

reducer 函数接收4个参数:

  1. Accumulator (acc) (累计器)
  2. Current Value (cur) (当前值)
  3. Current Index (idx) (当前索引)
  4. Source Array (src) (源数组)

 

const map1 = arr.reduce((acc, cur, idx, arr)=> {
  return acc + cur*idx
}); // 返回一个值, 第一个数不是成为cur,二是acc的初始值,cur的第一个值是第二个数

 

如果array是对象数组,但要做对象属性值的累加,可以给Accumulator (acc) (累计器)一个初始值initval

const arr2 = [{name:'1', num:1},{name:'3',num: 8},{name:'7',num:90}]; 
const initval = 90;
arr2.reduce((total, currentValue, currentIndex, arr)=>{return total+currentValue.num}, initval);
//90+1+8+90=189

  

 

 

 

posted @ 2020-09-02 17:01  baixinL  阅读(337)  评论(0编辑  收藏  举报