JS数组遍历方法: map,filter,forEach...

ECMAScript5 给数组定义了五个迭代方法:

  • every();

对于数组中个每一项运行给定函数,如果函数的每一项都返回true, 则结果返回true

 var nums = [10,3,5, 6,87];
 var everyRet = nums.every(function(item, index, array){
            console.log('item:'+ item, 'index:'+ index, 'array:'+ array.toString()); 
            // item:10 index:0 array:10,3,5,6,87
            // item:3 index:1 array:10,3,5,6,87
            return item > 5;
   });
console.log(everyRet);  // false
  • some();

对于数组中的每一项运行给定的函数,如果函数对任意一项返回true,则结果返回true

var nums = [10,3,5, 6,87];
 var someRet = nums.some(function(item, index, array){
            console.log('item:'+ item, 'index:'+ index, 'array:'+ array.toString()); 
            // item:10 index:0 array:10,3,5,6,87
            return item > 5;
   });
console.log(someRet);  // true
  • filter();

对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组

var nums = [10,3,5, 6,87];
 var filterRet = nums.filter(function(item, index, array){
            console.log('item:'+ item, 'index:'+ index, 'array:'+ array.toString()); 
            // item:10 index:0 array:10,3,5,6,87
            return item > 5;
   });
console.log(filterRet);  //  [10, 6, 87]
  • forEach();

对数组的每一项运行给定的函数。无返回值

var nums = [10,3,5, 6,87];
 var forEachRet = nums.forEach(function(item, index, array){
            console.log('item:'+ item, 'index:'+ index, 'array:'+ array.toString());
   });
console.log(forEachRet);  //  undefined
  • map();

对数组的每一项运行给定函数,返回每次函数调用结果组成的数组

var nums = [10,3,5, 6,87];
var mapRet = nums.map(function(item, index, array){
         if(item > 10){
               return {item: item*2}
         }
  });
console.log(mapRet);  //   [undefined, undefined, undefined, undefined,item: 174]
  • reduce();

对数组中的每个元素执行一个由您提供的reducer函数,将结果汇总为单个返回值;就是可以将很多元素归并到一个元素上。

// 先定义一个累加的函数
const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;
// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer)); // 10


// 一种数组去重方法
let arr = [1,2,1,2,3,5,4,5,3,4,4,4,4];
let result = arr.sort().reduce((init, current) => {
    if(init.length === 0 || init[init.length-1] !== current) {
        init.push(current);
    }
    return init;
}, []);
console.log(result); //[1,2,3,4,5]

总结一下:
a.无返回值的遍历,使用forEach,
b.筛选符合条件的数组子项,使用filter
c. 对原数组编辑修改,使用map
d. every,some布尔类型校验时有用
e. reducer数组累加、去重
参考: 《JavaSrcipt高级程序设计》

你可能感兴趣的:(JS数组遍历方法: map,filter,forEach...)