模块 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;返回帐户;
3 次尝试后可用的解决方案