js操作数组的方法 02

js操作数组的方法 01:https://www.cnblogs.com/xingyue525/p/13927434.html

迭代方法:

  ECMAScript 5 为数组定义了 5 个迭代方法。每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响 this 的值。

  传入这些方法中的函数会接收三个参数:数组项的值该项在数组中的位置数组对象本身

 

1、every() :对数组中的每一项运行给定函数,如果该函数对每一项都返回 true ,则返回 true 。(当返回false 时整个循环就结束)(不会影响原数组)

var numbers = [3,2,3,4,5,5,4,3,2,1,3,2,1];
var everyResult = numbers.every(function(item, index, array){
    console.log(item) // 3 2
    return (item > 2);
});
console.log(everyResult) // false


var numbers = [3,5,3,4,5,5,4,3];
var everyResult = numbers.every(function(item, index, array){
    console.log(item) // 3,5,3,4,5,5,4,3
    return (item > 2);
});
console.log(everyResult) // true

 

2、filter() :对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。(不会影响原数组)(return 不影响继续执行) (生成新数组)

var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item, index, array){
    console.log(item) // 1,2,3,4,5,4,3,2,1
    return (item > 2);
});
            
console.log(filterResult) // [3, 4, 5, 4, 3]
console.log(numbers) // [1, 2, 3, 4, 5, 4, 3, 2, 1]

 

3、forEach() :对数组中的每一项运行给定函数。这个方法没有返回值。(return 不影响继续执行)

var numbers = [1,2,3,4,5,4,3,2,1];
var forEachResult = numbers.forEach(function(item, index, array){
    console.log(item) // 1,2,3,4,5,4,3,2,1
    return (item > 2);
});
                        
console.log(forEachResult) // undefined 
console.log(numbers) // [1, 2, 3, 4, 5, 4, 3, 2, 1]

 

4、map() :对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。(生成新数组)

var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item, index, arr) {
    console.log(item) // 1, 2, 3, 4, 5, 4, 3, 2, 1
    return item * 2
})
                    
console.log(mapResult) // [2, 4, 6, 8, 10, 8, 6, 4, 2]
console.log(numbers) // [1, 2, 3, 4, 5, 4, 3, 2, 1]

 

5、some() :对数组中的每一项运行给定函数,如果该函数对任一项返回 true ,则返回 true 。遇到一项返回true, 就停止执行循环

var numbers = [1,2,3,4,5,4,3,2,1];
var someResult = numbers.some(function(item, index, arr) {
    console.log(item) // 1, 2, 3
    return item > 2
})
                    
console.log(someResult) // true
console.log(numbers) // [1, 2, 3, 4, 5, 4, 3, 2, 1]

 

归并方法

   reduce() 和 reduceRight() 。这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。  

  这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。

  传给 reduce() 和 reduceRight() 的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。

1、 reduce()  方法从数组的第一项开始,逐个遍历到最后。

var values = [1,2,3,4,5];
var i = 0;
var sum = values.reduce(function(prev, cur, index, array){
    i++;                          
    console.log(prev)           //  1 , 3 , 6 , 10
    console.log(cur)            //  2 , 3 , 4 , 5
    console.log(index)          //  1 , 2 , 3 , 4 
    console.log(i)              //  1 , 2 , 3 , 4     
    return prev + cur;
});
            
console.log(sum) // 15
console.log(values) // [1, 2, 3, 4, 5]

 

2、 reduceRight() 方法从数组的最后一项开始,向前遍历到第一项。

var values = [1,2,3,4,5];
var i = 0;
var sum = values.reduceRight(function(prev, cur, index, array){
    i++;                          
    console.log(prev)           //  5 , 9 ,12 , 14
    console.log(cur)            //  4 , 3 , 2 , 1
    console.log(index)          //  3 , 2 , 1 , 0 
    console.log(i)              //  1 , 2 , 3 , 4     
    return prev + cur;
});
            
console.log(sum) // 15
console.log(values) // [1, 2, 3, 4, 5]

 

posted @ 2020-11-05 15:49  啃骨头的猫  阅读(140)  评论(0编辑  收藏  举报