出于學習目的,我想獲取陣列的每個第二個元素。我成功使用了一個 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)。誰能推薦這里最好的方法?
uj5u.com熱心網友回復:
你可以很容易地做到這一點filter
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const filtered = numbers.filter((_, i) => i % 2 === 0)
console.log(filtered)
您只需過濾掉具有奇數索引的元素
uj5u.com熱心網友回復:
您可以使用filter并檢查當前陣列元素的索引是否可被 2 整除:
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log({
numbers,
result: numbers.filter((_, index) => index % 2 === 0)
});
uj5u.com熱心網友回復:
您可以使用過濾器進行索引。
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log({
numbers,
result: numbers.filter((n,i)=>i%2==0)
});
uj5u.com熱心網友回復:
您可以像這樣使用 for each 回圈來獲得相同的所需輸出:
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。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/470152.html
標籤:javascript 数组
