首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过删除字符串计算数组的和?

通过删除字符串计算数组的和?
EN

Stack Overflow用户
提问于 2021-03-08 11:29:36
回答 6查看 92关注 0票数 5

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

代码语言:javascript
复制
var students = [
    ['Toto', 4, 17],
    ['Titi', 11, 12],
    ['Tata', 12, 14]
];

我必须计算每个学生的总数。除此之外,我必须避开绳子。

我为学生Toto获得的结果是0而不是21

我不明白问题出在哪里?

代码语言:javascript
复制
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);
}

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2021-03-08 11:39:31

你可以运行这个

代码语言:javascript
复制
var students = [
  ['Toto', 4, 17],
  ['Titi', 11, 12],
  ['Tata', 12, 14]
];



for (var i = 0; i < students.length; i++) {
  var result = 0;
  for (var j = 0; j <= students[i].length; j++) {
    if (typeof(students[i][j]) === "number") {
      result += students[i][j];
    }
  }

  console.log("Student " + students[i][0] + " has the result " + result);
}

票数 0
EN

Stack Overflow用户

发布于 2021-03-08 11:37:50

您只需在这里使用与Array.prototype.reduce一起的析构:

代码语言:javascript
复制
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中直接重构:

代码语言:javascript
复制
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)}`)
}

这也适用于长度不同的总结表:

代码语言:javascript
复制
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)}`)
}

票数 3
EN

Stack Overflow用户

发布于 2021-03-08 11:36:51

students数组中,每个项都是一个数组。

代码语言:javascript
复制
const students = [
  ['Toto', 4, 17],
  ['Titi', 11, 12],
  ['Tata', 12, 14]
];


for (let i = 0; i < students.length; i++) {
  const student = students[i];
  let result = 0;
  for (let j = 0; j < student.length; j++) {
    if (typeof(student[j]) === "number") {
      result += student[j];
  }
  
  }
  console.log("Student " + students[i][0] + " has the result " + result);
}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66529002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档