我有一个数组,每个学生有 3 个索引:
var students = [
['Toto', 4, 17],
['Titi', 11, 12],
['Tata', 12, 14]
];
我必须计算每个学生的总和。除此之外,我必须避免使用字符串。我为学生获得的结果
Toto
是 0
而不是 21
.不明白问题出在哪里?
var students = [
['Toto', 4, 17],
['Titi', 11, 12],
['Tata', 12, 14]
];
var result = 0;
for (var i = 0; i < students.length; i++) {
if (typeof(students[i]) === "number") {
result += students[i];
}
console.log("Student " + students[i][0] + " has the result " + result);
}
最佳答案
您可以在 Array.prototype.reduce
旁边简单地使用解构。这里:
const students = [['Toto', 4, 17], ['Titi', 11, 12], ['Tata', 12, 14]];
for (const student of students) {
const [ name, ...summands ] = student;
console.log(`${name} scored ${summands.reduce((acc,val)=>acc+val,0)}`)
}
对于更简洁的版本,您可以直接在 for-definition 中解构:
const students = [['Toto', 4, 17], ['Titi', 11, 12], ['Tata', 12, 14]];
for (const [ name, ...summands ] of students) {
console.log(`${name} scored ${summands.reduce((acc,val)=>acc+val,0)}`)
}
这也适用于长度不同的总和列表:
const students = [['Toto'], ['Titi', 1,2,3,4,5,6], ['Tata', 12, 14]];
for (const [ name, ...summands ] of students) {
console.log(`${name} scored ${summands.reduce((acc,val)=>acc+val,0)}`)
}
关于javascript - 通过删除字符串来计算数组的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66529002/