javascript - 通过删除字符串来计算数组的总和?

标签 javascript

我有一个数组,每个学生有 3 个索引:

var students = [
    ['Toto', 4, 17],
    ['Titi', 11, 12],
    ['Tata', 12, 14]
];
我必须计算每个学生的总和。除此之外,我必须避免使用字符串。
我为学生获得的结果Toto0而不是 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/

相关文章:

javascript - 如何确定浏览器是否为 64 位?

php - 在 PHP 中传递特殊字符

JavaScript 复制对象结构(不是属性值)

javascript - 谷歌地图的模拟 addEventListener

javascript - PHP 脚本不接受来自具有 AngularJS 脚本的客户端的 GET/POST 数据

javascript - 网站上的 ASCII 艺术

javascript - 如何在没有点击或触摸事件的情况下通过javascript在Android上打开键盘?

javascript - 如何使下拉列表选择更新网页上的图像?

javascript - 使用 jquery 从输入中获取文件名列表

javascript - 如何将一个对象添加到另一个对象