使用数组方法获取数组的每第二个元素



出于学习目的,我想获得数组的每第二个元素。我成功地使用了for循环:

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
function filterEverySecond(arr) {
let everySecondEl = [];
for (let i = 0; i < arr.length; i += 2) {
everySecondEl.push(arr[i]);
}
return everySecondEl;
}
console.log({
numbers,
result: filterEverySecond(numbers)
});

现在我想实现相同的没有for循环,但通过使用数组方法(forEach, filter, map或reduce)。谁能推荐一下最好的方法?

您可以轻松地使用filter

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const filtered = numbers.filter((_, i) => i % 2 === 0)
console.log(filtered)

只是过滤掉索引为奇数的元素

您可以使用filter并检查当前数组元素的索引是否能被2整除:

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log({
numbers,
result: numbers.filter((_, index) => index % 2 === 0)
});

您可以使用过滤器作为索引

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log({
numbers,
result: numbers.filter((n,i)=>i%2==0)
});

您可以像这样为每个循环使用a来获得相同的期望输出:

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const result = [];
numbers.forEach(number => {
if (number % 2 != 0) {
result.push(number);
}
});
console.log(numbers);
console.log(result);

模数运算符返回两个数相除后的余数。例如:1 % 2将返回1作为余数。因此,在if语句中,我们检查数字是否不能被2整除。

相关内容