8种方法教你遍历数组

译者:王二狗
原文: https://www.jstips.co/en/java...

JS 中可以通过很多不同的方式来实现数组的遍历,下面我们先从一些经典的遍历方法开始,然后逐步扩充新的遍历方式。

while

let index = 0
const array = [1,2,3,4,5,6]
while(index

for

const array = [1,2,3,4,5,6]
for(let index = 0; index < array.length; index++) {
    console.log(array[index])
}
//result:1 2 3 4 5 6

forEach

const array = [1,2,3,4,5,6]

array.forEach(function(current_value,index,value){
    console.log(`At index ${index} in ${array} value is ${current_value}`)

})
/*
At index 0 in 1,2,3,4,5,6 value is 1
At index 0 in 1,2,3,4,5,6 value is 2
At index 0 in 1,2,3,4,5,6 value is 3
At index 0 in 1,2,3,4,5,6 value is 4
At index 0 in 1,2,3,4,5,6 value is 5
At index 0 in 1,2,3,4,5,6 value is 6
*/

map

map会对每一个数组选项应用函数,并返回一个新的数组。

const array = [1,2,3,4,5,6]

const square = x => Math.pow(x,2)

const squares = array.map(square)

console.log(`Original array: ${array}`)
console.log(`squared array ${squares}`)
/*
Original array: 1,2,3,4,5,6
squared array 1,4,9,16,25,36
*/

reduce

reduce()方法对数组中的每个元素执行一个由您提供的reduce函数(升序执行),将其结果汇总为单个值返回。

const array = [1,2,3,4,5,6]

const sum = (x,y) => x + y

const array_sum = array.reduce(sum,0)

console.log(`The sum of ${array} is ${array_sum}`)

//The sum of 1,2,3,4,5,6 is 21

filter

通过布尔函数过滤数组中的元素,最后返回一个由过滤出来的元素组成的数组。

const array = [1,2,3,4,5,6]

const even = x => x % 2 === 0 

const even_array = array.filter(even)

console.log(`Even numbers in array ${array} is ${even_array}`)

//Even numbers in array 1,2,3,4,5,6 is 2,4,6

every

every()方法测试一个数组内的所有元素是否能够通过某个指定函数的测试,它返回一个布尔值。

注意:若收到一个空数组,此方法在所有情况下都会返回 true

const array = [1,2,3,4,5,6]

const under_seven = x => x < 7

if(array.every(under_seven)) {
    console.log('所有在该数组中的元素均小于7')
}else{
    console.log('在该数组中的元素至少有一项不小于7')
}
//所有在该数组中的元素均小于7

some

some()方法测试数组中是不是至少有一个元素通过了被提供的函数测试,它返回的是一个 boolean 类型的值。

注意:如果用一个空数组进行测试,在任何情况下它返回的值就是 false

const array = [1,2,3,4,5,6]

const over_seven= x => x > 7

if(array.every(over_seven)) {
    console.log('至少有一个元素大于7')
}else{
    console.log('没有元素大于7')
}
//没有元素大于7
告诫自己,即使再累也不要忘记学习,成功没有捷径可走,只有一步接着一步走下去。 共勉!

你可能感兴趣的:(数组方法)