前篇使用索引和push等方式來加入刪除陣列裡的資料,這次來看看怎麼處理陣列中的每一筆資料。
先準備一些數字,使用map把每個分數都加 5 分:
map會把程式依序執行在陣列中的每一筆資料中,再將每次回傳的值放進新陣列。因為回傳會放在新陣列中,所以原陣列不會被修改。
const scores = [55, 60, 65,70];
const add_scores = scores.map((score) => score + 5);
console.log("將每個數字都+5",add_scores);
console.log("原本的",scores);

filter,讓陣列中通過條件的資料留下來
const passed = scores.filter((score) => score >= 60);
console.log(passed);

55不符合條件,所以僅有55不會被列入。find也會檢查條件,但它只回傳找到的第一筆;完全找不到時則會得到undefined。
const passed = scores.find((score) => score >= 60);
console.log("原條件改為find後",passed);

some和every得到的不是新陣列,而是true或false。some只要其中一筆符合就會得到true;every則要全部符合才算成立。
console.log(scores.some((score) => score === 60));
console.log(scores.every((score) => score === 60));

最後是reduce,它會將多筆資料累積成一個結果。下面的sum一開始是 0,每次把陣列中的數字加進去,最後能得到總和250。
const total = scores.reduce((sum, score) => sum + score, 0);
console.log(total);