モジュール 6 · レッスン 2 / 4コース内の 22/32~12 min
モジュールのレッスン (2/4)
減らす
reduce は、関数配列メソッドの中で最も強力です。コレクションをウォークスルーします。
ステップごとに更新されるアキュムレータを維持します。ループが終了すると、
アキュムレータ。
サイン
JS
arr.reduce((acc, elem) => nuovoAcc, valoreIniziale);accはvaloreInizialeに始まります。- 要素ごとに、新しい
accが計算されます。 - 最終結果は最後の
accです。
基本的な例: 和と積
JS
const numeri = [3, 1, 4, 1, 5];
const somma = numeri.reduce((a, n) => a + n, 0);
// 14
const prodotto = numeri.reduce((a, n) => a * n, 1);
// 60初期値がない場合、reduce は最初の要素から開始します (空の可能性があるため危険です)
配列 → エラー)。 可能な場合は、常に初期値を渡します。
オブジェクトの構築: 数を数える
JS
const parole = ['mela', 'pera', 'mela', 'kiwi', 'mela'];
const conteggio = parole.reduce((acc, p) => {
acc[p] = (acc[p] ?? 0) + 1;
return acc;
}, {});
// { mela: 3, pera: 1, kiwi: 1 }最大値/最小値を求める
JS
const nums = [3, 7, 1, 9, 4];
const max = nums.reduce((a, n) => (n > a ? n : a), -Infinity);
// 9(実際には、最大/最小値には Math.max(...nums) が推奨されます。これは教訓的な例です。)
試してみてください
運動#js.m6.l2.e1
試行回数: 0読み込み中…
`total(items)` を定義します。オブジェクトの配列 { 価格, 数量 } を受け取り、総支出額 (価格 * 数量の合計) を返します。リデュースを使用します。
エディターを読み込み中…
ヒントを表示
reduce((a, it) => a + it.price * it.quantity, 0)
3 回の試行後に解決策が利用可能になります
復習演習
運動#js.m6.l2.e2
試行回数: 0読み込み中…
`count(words)` を定義します。文字列の配列を指定すると、各文字列を出現回数にマップするオブジェクトを返します。オブジェクト アキュムレータでreduceを使用します。
エディターを読み込み中…
ヒントを表示
acc[p] = (acc[p] ?? 0) + 1; ACCを返します。
3 回の試行後に解決策が利用可能になります