JavaScript的数组常用的迭代方法

36次阅读

共计 5203 个字符,预计需要花费 14 分钟才能阅读完成。

1.forEach():让每一个数组的元素执行一次回调函数

2.map():返回一个由回调函数的返回值组成的新数组

3.filter():返回一个由数组中符合筛选条件的元素组成的新数组

4.find():返回第一个在数组中符合筛选条件的元素并返回,找不到返回 undefined

5.findIndex():返回第一个在数组中符合筛选条件的元素的索引值并返回,找不到返回 -1

6.every():检查是否数组每一个元素都符合条件,则返回 true。反之返回 false

7.some():检查是否数组至少有一个元素符合条件,则返回 true。如果所有元素不符合条件,则返回 false

8.reduce():返回数组中前项和后项做某种计算后并累计的值

1.forEach():让每一个数组的元素执行一次回调函数

    /**
    * 方法:forEach
    * 作用:让每一个数组的元素执行一次回调函数
    * 语法:arr.forEach(callback(currentValue[, index[,array]])[, thisArg])
    * 参数:*     callback 生成新数组元素的函数,使用三个参数
    *     currentValue 可选 数组中正在处理的当前元素
    *     index 可选 数组中正在处理当前元素的索引
    *     array 可选 forEach() 方法正在操作的数组
    *     thisA 可选参数 当执行回调函数 callback 时,用作 this 的值
    * 返回值:undefined
    * 描述:forEach 除了抛出异常以外,无法中止或者跳出循环
    *     
    */ 

    const arr = ['a', 'b', 'c'];
    arr.forEach(function(e){console.log(e)
    })
    // "a"
    // "b"
    // "c"

    const arr = [1,3,7]
    let numAll = 0;
    arr.forEach(function(e){numAll += e})
    console.log(numAll)
    // 11

2.map():返回一个由回调函数的返回值组成的新数组

    /**
    * 方法:map
    * 作用:返回一个由回调函数的返回值组成的新数组
    * 语法:var new_array = arr.map(function callback(currentValue[, index[, array]]) {
    *             // Return element for new_array 
    *     }[, thisArg])
    * 参数:*     callback 数组的每个元素执行的函数
    *     currentValue 数组中正在处理的当前元素
    *     index 可选 数组中正在处理当前元素的索引
    *     array 可选 map 方法正在调用的数组
    *     thisA 可选参数 执行 callback 函数时,用作 this
    * 返回值:一个由原数组每个元素执行回调函数的结果组成的新数组
    * 描述:map 不修改原数组
    *         要写返回值
    */ 

    // 数组中每个元素乘 2,返回新数组 
    const arr =[1,4,9,16]
    const arr1 = arr.map(x => x *2)
    console.log(arr1)
    // [2, 8, 18, 32]

    // 数组中的每个元素平方根
    var numbers = [1,4,9]
    var roots = numbers.map(Math.sqrt) 
    console.log(roots)
    // [1,2,3]

3.filter():返回一个由数组中符合筛选条件的元素组成的新数组


    /**
    * 方法:filter
    * 作用:返回一个由数组中符合筛选条件的元素组成的新数组
    * 语法:var newArray = arr.filter(callback(currentValue[, index[, array]])[, thisArg])
    * 参数:*     callback 数组的每个元素执行的函数
    *     currentValue 数组中正在处理的当前元素
    *     index 可选 数组中正在处理当前元素的索引
    *     array 可选 filter 方法正在调用的数组
    *     thisArg 可选参数 执行 callback 函数时,用作 this
    * 返回值:返回一个由数组中符合筛选条件的元素组成的新数组,如果都不符合条件,则返回空数组
    * 描述:filter 不修改原数组
    *             要写返回值
    */ 

    // 筛选字符串长度大于 6 的元素组成一个新数组
    const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present']
    const result = words .filter(word => word.length > 6)

    console.log(result)
    // ["exuberant", "destruction", "present"]
    
    var fruits =  ['apple', 'banana', 'grapes', 'mango', 'orange'];
    function filterItems(query){return fruits.filter(function(e){
        // 返回由某个指定的字符串可以在字符串(元素)中首次出现的元素组成的新数组
        // 没出现 indexOf 返回 -1
        return e.toLowerCase().indexOf(query.toLowerCase()) > -1;
      })
    }

    console.log(filterItems('AP'))
    console.log(filterItems('aN'))
    // ["apple", "grapes"]
    // ["banana", "mango", "orange"]

4.find():返回第一个在数组中符合筛选条件的元素并返回,找不到返回 undefined

    /**
    * 方法:find
    * 作用:返回第一个在数组中符合筛选条件的元素并返回,找不到返回 undefined
    * 语法:arr.find(callback(currentValue[, index[, array]])[, thisArg])
    * 参数:*     callback 数组的每个元素执行的函数
    *     currentValue 数组中正在处理的当前元素
    *     index 可选 数组中正在处理当前元素的索引
    *     array 可选 find 方法正在调用的数组
    *     thisArg 可选参数 执行 callback 函数时,用作 this
    * 返回值:返回第一个在数组中符合筛选条件的元素并返回,找不到返回 undefined
    * 描述:find 不修改原数组
    *             要写返回值
    */ 

    const arr =  [5, 12, 8, 130, 44];
    const arr1 = arr.find(element => element > 10)
    const arr2 = arr.find(element => element > 500)
    console.log(arr)
    console.log(arr1)
    console.log(arr2)
    // [5, 12, 8, 130, 44];
    // 12
    // undefined

    var inventory =  [{name: 'apples', quantity: 2},
      {name: 'bananas', quantity: 0},
      {name: 'cherries', quantity: 5}
    ];

    function findItem(query){return query.name = 'apples'}

    console.log(inventory.find(findItem))
    console.log(inventory.find(e => e.name = 'apples'))
    // {name: "apples", quantity: 2}
    // {name: "apples", quantity: 2}

5.findIndex():返回第一个在数组中符合筛选条件的元素的索引值并返回,找不到返回 -1

    /**
    * 方法:findIndex
    * 作用:返回第一个在数组中符合筛选条件的元素的索引值并返回,找不到返回 -1
    * 语法:arr.findIndex(callback(currentValue[, index[, array]])[, thisArg])
    * 参数:*     callback 数组的每个元素执行的函数
    *     currentValue 数组中正在处理的当前元素
    *     index 可选 数组中正在处理当前元素的索引
    *     array 可选 findIndex 方法正在调用的数组
    *     thisArg 可选参数 执行 callback 函数时,用作 this
    * 返回值:返回第一个在数组中符合筛选条件的元素并返回,找不到返回 undefined
    * 描述:findIndex 不修改原数组
    *               要写返回值
    */ 

    const arr =  [5, 12, 8, 130, 44];
    const arr1 = arr.findIndex(element => element > 10)
    const arr2 = arr.findIndex(element => element > 500)
    console.log(arr)
    console.log(arr1)
    console.log(arr2)
    // [5, 12, 8, 130, 44];
    // 1
    // -1

6.every():检查是否数组每一个元素都符合条件,则返回 true。反之返回 false

    /**
    * 方法:every
    * 作用:检查是否数组每一个元素都符合条件,则返回 true。反之返回 false
    * 语法:arr.every(callback(currentValue[, index[, array]])[, thisArg])
    * 参数:*     callback 数组的每个元素执行的函数
    *     currentValue 数组中正在处理的当前元素
    *     index 可选 数组中正在处理当前元素的索引
    *     array 可选 every 方法正在调用的数组
    *     thisArg 可选参数 执行 callback 函数时,用作 this
    * 返回值:返回第一个在数组中符合筛选条件的元素并返回,找不到返回 undefined
    * 描述:every 不修改原数组
    *           要写返回值
    */ 

    const arr =  [1, 30, 39, 29, 10, 13];
    const arr1 = arr.every(element => element > 0)
    const arr2 = arr.every(element => element > 10)
    console.log(arr)
    console.log(arr1)
    console.log(arr2)
    // [5, 12, 8, 130, 44];
    // true
    // false

7.some():检查是否数组至少有一个元素符合条件,则返回 true。如果所有元素不符合条件,则返回 false


    /**
    * 方法:some
    * 作用:检查是否数组至少有一个元素符合条件,则返回 true。如果所有元素不符合条件,则返回 false
    * 语法:arr.every(callback(currentValue[, index[, array]])[, thisArg])
    * 参数:*     callback 数组的每个元素执行的函数
    *     currentValue 数组中正在处理的当前元素
    *     index 可选 数组中正在处理当前元素的索引
    *     array 可选 some 方法正在调用的数组
    *     thisArg 可选参数 执行 callback 函数时,用作 this
    * 返回值:返回第一个在数组中符合筛选条件的元素并返回,找不到返回 undefined
    * 描述:some 不修改原数组
    *           要写返回值
    */ 

    const arr =  [1, 30, 39, 29, 10, 13];
    const arr1 = arr.some(element => element > 0)
    const arr2 = arr.some(element => element > 10)
    console.log(arr)
    console.log(arr1)
    console.log(arr2)
    // [5, 12, 8, 130, 44];
    // true
    // true

8.reduce():返回数组中前项和后项做某种计算后并累计的值

    /**
    * 方法:reduce
    * 作用:返回数组中前项和后项做某种计算后并累计的值
    * 语法:arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
    * 参数:*     callback 数组的每个元素执行的函数
    *     accumulator 累计器累计回调的返回值
    *     currentValue 数组中正在处理的当前元素
    *     index 可选 数组中正在处理当前元素的索引
    *     array 可选 reduce 方法正在调用的数组
    *     initialValue 作为第一次调用 callback 函数时的第一个参数的值。*                  如果没有提供初始值,则将使用数组中的第一个元素。*                  在没有初始值的空数组上调用 reduce 将报错。* 返回值:返回函数累计的结果
    * 描述:reduce 不修改原数组
    *           要写返回值
    */ 

    const arr = [1,2,3,4]
    const arr1 = arr.reduce((el1,el2) => el1 + el2)
    const arr2 = arr.reduce((el1,el2) => el1 * el2)
    console.log(arr)
    console.log(arr2)
    // [1,2,3,4]
    // 10
    // 24

正文完
 0