【发布时间】:2020-07-20 21:21:29
【问题描述】:
我目前正在关注 James Moore 在 Udemy 上的 JavaScript 初学者函数式编程课程。我在理解一段代码的工作原理时遇到了一些麻烦:
const grades = [22, 77, 89, 90, 45, 77, 87, 92, 66, 44, 74, 81, 82, 81, 97];
const gradeCount = grades.reduce(computer, {});
function computer(acc, grade){
const {a = 0, b = 0, c = 0, d = 0, f = 0} = acc;
if (grade >= 90){
return {...acc, a: a + 1};
} else if (grade >= 80){
return {...acc, b: b +1};
} else if (grade >= 70){
return {...acc, c: c + 1};
}else if (grade >= 60){
return {...acc, d: d + 1};
} else {
return {...acc, f: f + 1};
}
}
console.log(gradeCount);
我的第一个问题是;为什么在这里使用解构而不是
const a=0, b=0, c=0, d=0, f=0;?与原始技术相比,这似乎不那么冗长?其次,为什么 reduce 方法返回一个包含所有等级及其对应数量的对象,而不是每个等级的单独对象?
提前感谢您的任何建议。
【问题讨论】:
-
const a=0, b=0, c=0, d=0, f=0;不会像解构那样将变量初始化为acc的属性值。 -
请注意,这不是最干净的代码。编写两个单独的函数会更好,例如
counts(gradePoints.map(pointsToGrade))
标签: javascript arrays object destructuring reducers