js 小技巧,遍历数组

453

有几种方法可用于遍历Javascript中的数组。我们将从经典的开始,逐步向标准添加

while

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

for (classical)

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

forEach

const array = [1,2,3,4,5,6];
array.forEach((current_value, index, array) => {
    console.log(`At index ${index} in array ${array} the value is ${current_value}`);
})

map

The last construct was useful, however, it doesn’t return a new array which might be undesirable for your specific case. map solves this by applying a function over every element and then returning the new array.

最后一个构造很有用,但是它不会返回新数组,这对于您的特定情况可能是不希望的。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}`);

reduce

The reduce() method applies a function against an accumulator and each element in the array (from left to right) to reduce it to a single value.

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: ${array} is ${array_sum}`);

filter

Filters elements on an array based on a boolean function.

基于布尔函数对数组中的元素进行筛选。

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}: ${even_array}`);

every

Got an array and want to test if a given condition is met in every element?

得到一个数组,想要测试每个元素中是否满足给定条件?

const array = [1,2,3,4,5,6];
const under_seven = x => x < 7;

if (array.every(under_seven)) {
  console.log('Every element in the array is less than 7');
} else {
  console.log('At least one element in the array was bigger than 7');
}

some

Test if at least one element matches our boolean function.

测试是否至少有一个元素符合我们的布尔函数。

const array = [1,2,3,9,5,6,4];
const over_seven = x => x > 7;

if (array.some(over_seven)) {
  console.log('At least one element bigger than 7 was found');
} else {
  console.log('No element bigger than 7 was found');
}