数组的遍历方法

239 阅读2分钟

every()

对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。(对数组中每一项进行“&&”运算)

// 每一项都小于6
var numbers = [1,2,3,4,5,1]
var result = numbers.every(function (item, index, array) {
    return (item < 6)
})
console.log(result) // true
// 数组中有等于5的项
var numbers = [1,2,3,4,5,1]
var result = numbers.every(function (item, index, array) {
    return (item < 5)
})
console.log(result) // false

some()

对数组中的每一项运行给定的函数,如果该函数对任意一项返回true,则返回true。(对数组每一项进行“||”运算)

// 每一项都小于6
var numbers = [1,2,3,4,5,1]
var result = numbers.some(function (item, index, array) {
    return (item > 6)
})
console.log(result) // false
// 数组中有等于5的项
var numbers = [1,2,3,4,5,1]
var result = numbers.some(function (item, index, array) {
    return (item < 5)
})
console.log(result) // true

filter()

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

var filtNumbers = [1,2,3,4,5,6,4,3,2]
var filArr = filtNumbers.filter((item, index, array) => {return (item >= 3)})
console.log(filArr) // [3, 4, 5, 6, 4, 3]

forEach()

对数组中的每一项运行给定函数,无返回值。回调函数传入第三个参数array,并对其进行修改,会修改原数组

var arr = [1,2,3,4]
arr.forEach((item, index, array) => { array[index] = item * 3})
console.log(arr) // [3,6,9,12]

map()

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

var arr = [1,2,3,4]
var mapArr = arr.map((item, index, array) => { return item * 3})
console.log(mapArr) // [3,6,9,12]
console.log(arr) // [1,2,3,4]

reduce()/reduceRight()

两者属于归并方法。其中reduce()从数组的第一项开始,逐个遍历到最后。reduceRight()则从数组的最后一项开始,向前遍历到第一项。两个方法都接收两个参数:一个在每一项上调用的函数和作为归并基础的初始值(可选)

两个方法的回调函数接收4个参数:前一个值,当前值,项的索引值和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项

var arr = [1,2,3,4,5]
var sum = arr.reduce(function (prev, cur, index, array) {
    console.log(prev, cur)
    // 1 2
    // 3 3
    // 6 4
    // 10 5
    return prev + cur
})
var sum = arr.reduceRight(function (prev, cur, index, array) {
    console.log(prev, cur)
    // 5 4
    // 9 3
    // 12 2
    // 14 1
    return prev + cur
})
console.log(sum) // 15

for...of

循环数组,返回数组中的项

var arr = [1,2,3,4,5]
for (let a of arr) {
    console.log(a) // 1 2 3 4 5(打印数组项)
    console.log(typeof a) // number number number number
}

for...in

循环数组,返回数组项的下标

var arr = [1,2,3,4,5]
for (let b in arr) {
    console.log(b) // 0 1 2 3 4(打印数组下标)
    console.log(typeof b) // string string string string string
}