译者:王二狗
原文: 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
告诫自己,即使再累也不要忘记学习,成功没有捷径可走,只有一步接着一步走下去。 共勉!