如何使用reduce()来计算总和?




我需要帮助来理解和实践Js中的reduce()方法。
我想通过reduce()来计算每门课的总习题数。

这是正确的方式吗?

s = previousValue,
p = currentValue,


正如@Rani sharimm在评论中提到的,我必须在零件数组上使用reduce()。

courses.map((course) => { console.log(course.parts.reduce((s, p) => s + p.exercises)) })

const courses = [
{
name: "Half Stack application development",
id: 1,
parts: [
{
name: "Fundamentals ",
exercises: 10,
id: 1,
},
{
name: "Using  data",
exercises: 7,
id: 2,
},
{
name: "State ",
exercises: 14,
id: 3,
},
{
name: "React",
exercises: 11,
id: 4,
},
],
},
{
name: "Node.js",
id: 2,
parts: [
{
name: "Routing",
exercises: 3,
id: 1,
},
{
name: "Middlewares",
exercises: 7,
id: 2,
},
],
},
];

第一个参数通常是先前的值,但是您可以使用initialValue初始化第一个参数

阅读手册

reduce((previousValue, currentValue, currentIndex, array) => { ... }, initialValue)

const courses = [
{
name: "Half Stack application development",
id: 1,
parts: [
{ name: "Fundamentals ", exercises: 10, id: 1, },
{ name: "Using  data", exercises: 7, id: 2, },
{ name: "State ", exercises: 14, id: 3, },
{ name: "React", exercises: 11, id: 4, },
],
},
{
name: "Node.js",
id: 2,
parts: [
{ name: "Routing", exercises: 3, id: 1, },
{ name: "Middlewares", exercises: 7, id: 2, },
],
},
];


courses.forEach(course => {
course.totalExercises = course.parts.reduce(
(accumulator, part) => accumulator + part.exercises,
0  // initial value for accumulator
);

console.log(course.name, ', total exercises:', course.totalExercises);
});
console.log(courses);

要了解基于失败-成功的reduce如何工作,请尝试将console.log放入reducer中:

const parts = [ {exercises: 5}, {exercises: 3}, {exercises: 7} ];
const result = parts.reduce(
(prev, curr, _, arr) => {
console.log('prev: ', prev);
console.log('curr: ', curr);
console.log('--------');
return prev + curr.exercises;
},
0
);
console.log('result:', result);

最新更新