javascript - 通过删除字符串来计算数组的总和?
问题描述
我有一个数组,每个学生有 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)}`)
}
推荐阅读
- apache-kafka-connect - Kafka HDFS Sink 连接器重启
- python - 从 Python 中的 Dictionary 打印特定键的值
- laravel - Laravel JSON 响应错误处理不起作用
- apache - 通过 .htaccess 从 URL 中删除双斜杠的问题
- typescript - 在嵌套对象中使用 firestore 的 FieldPath.documentId()
- javascript - React:在渲染函数中获取函数的返回值
- reactjs - 单击链接时滚动到页面一部分的React.js Header?
- python - 将数据框转换为列表时更改值
- c# - JsonSerializer.Deserialize 多次使用
- javascript - 根据 JSON Array 重新排列 HTML 表格数据