ECMAScript数组方法

迭代方法

  ECMAScript5为数组定义了5个迭代方法。传入这些方法中的函数会接收三个参数:数组项的值、该项在数组中的位置和数组对象的本身。根据使用方法的不同,这个函数执行后的返回值可能会、也可能不会影响访问的返回值。以下是这5个迭代方法的作用

  • every():对数组中的每一项运行给定的函数,如果该函数对每一项都返回true,则返回true(返回值为布尔类型)。
  • filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。
  • forEach():对数组中的每一项运行给定的函数。这个方法没有返回值。
  • map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
  • some():对数组中的每一项运行给定函数,如果该函数对任意一项返回true,则返回true。
var arr = [1,2,3,4,5,6,7,8,9];
/*
    arr.every(function(item, index, array){})
    在every方法传入的函数中的参数 item是第一个元素的值  index是第一个元素的下标  array是传入的数组
    item和index不会把传入的数组遍历输出 


    arr.some(function(item, index, array) {})
    在some方法的回调函数中的参数  item和index 会遍历输出数组中的每一个元素和其对应的下标

*/
var everyResult = arr.every(function(item, index, array){
    console.log(item)   // 1
    console.log(index)  // 0
    console.log(array)  // [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
    return item > 6
});
console.log(everyResult)    // false

var someResult = arr.some(function(item, index, array) {
    console.log(item)   // 1 2 3 4 5 6 7 8 9
    console.log(index)  // 0 1 2 3 4 5 6 7 8
    console.log(array)  // [1,2,3,4,5,6,7,8,9]
    return item > 6
});

console.log(someResult) // true
View Code

var arr = [1,2,3,4,5,6,7,8,9];

console.log("----------filter------------")
var filterResult = arr.filter(function(item, index, array){
    console.log(item)
    console.log(index)
    console.log(array)
    return item > 5
});
console.log(filterResult)


console.log("----------map------------")
var mapResult = arr.map(function(item, index, array){
    console.log(item)
    console.log(index)
    console.log(array)
    return item * 4
});


console.log(mapResult)
View Code

缩小方法

  ECMAScript5新增了两个缩小方法reduce()和reduceRight()。这两个方法都会迭代数组的所有元素,并构建一个新的值返回。reduce是从数组的第一项开始迭代,直到结束。reduceRight是从数组的最后一项迭代,直到第一项为止。

  这两个方法都接收一个回调函数,回调函数中有四个参数。第一个参数是上一个值,第二个参数是当前值,第三个参数是当前值的索引,第四个参数是传入的数组。

var arr = [1,2,3,4,5,6,7,8,9];

var reduceResult = arr.reduce(function(prev, cur, index, array){
    /*
        第一次执行回调函数时prev的值1 cur的值是2
        第二次prev为3(1+2) cur为3
    
    */
    return prev + cur
});

console.log(reduceResult)   // 45

var rightResult = arr.reduceRight(function(prev, cur, index, array){
    /*
        第一次执行回调函数时prev的值9 cur的值是8
        第二次prev为17(9+8) cur为7
    
    */
    return prev + cur
});

console.log(rightResult)    // 45
View Code

猜你喜欢

转载自www.cnblogs.com/peiyanh/p/9543836.html
今日推荐