2

为我的发展课做家庭作业。我的部分问题需要我创建一个多维数组 (2D) 并从每个嵌套数组中获取第二个元素的总和。我怎样才能做到这一点?这是我的数组:

var studentGrades = [['Bob', 85], ['Jim', 76], ['Steve', 92], ['Sue', 83], ['Liz', 65], ['Jack', 77], ['Jo', 96], ['Tim', 80], ['Mike', 53], ['John', 81]];

我需要把所有的数字加在一起。我意识到他们的索引是 [1],但我不知道如何编写代码来将它们加在一起。

4

5 回答 5

2

您必须使用 for 循环(项目)做一些事情,i并将一个count变量放在 for 循环之外。比使用索引1 作为计数,因为这是数字。

这应该可以帮助您完成作业。

更多信息

  1. 循环
于 2013-02-01T19:21:21.173 回答
1

使用 ECMAScript5Array.prototype.reduce将您的数组减少到该总和,

var sum = studentGrades.reduce(function(sum, pair) {
    return sum + pair[1];
}, 0);

用 ECMAScript6箭头函数美化它,

var sum = studentGrades.reduce((sum, pair) => sum + pair[1], 0);
于 2014-11-24T19:01:36.790 回答
1
var sum = 0;
for(var x=0; x<arr.length; x++)
    sum += arr[x][1];

您只需使用 2 个索引括号,尽管第二个索引将始终为 1。这是不安全的,因为多维数组可以是锯齿状的,因此第二维没有固定大小。

var sum = 0;
for(var x=0; x<arr.length; x++)
    if(arr[x].length >= 2)
        sum += arr[x][1];

每次迭代添加检查内部数组的长度是更安全的路线。

于 2013-02-01T19:19:51.187 回答
0

你可以使用Alasql JavaScript 库来做到这一点:

var res = alasql('SELECT VALUE SUM([1]) FROM ?',[studentGrades]);

在 jsFiddle试试这个例子。

于 2014-12-18T14:17:30.653 回答
0

二维数组只是数组的数组。在您更好地掌握它们之前,我建议您写出如何访问它们的网格。例如,数组 a 有 3 个元素,每个元素包含两个元素(我们称之为 b)。索引看起来像这样

a0b0 a0b1 
a1b0 a1b1
a2b0 a2b1

在你的情况下是

[['Bob', 85],
['Jim', 76],
['Steve', 92]]

因此,要获得 Jims 的成绩,我们可以查看索引表,它将是 a1b1,它转换为 studentGrades [1][1]。要遍历双维数组,您先遍历行然后遍历列

for(var row = 0; row < a.length; row++){
    var b = a[row];
    for(var column = 0; column < b.length; column++){
        var accesingByRowAndColumn = a[row][column];
        var accesingByColumn = b[column];
    }
}

如果您只是学习,我不建议您将一堆代码放在一起来产生解决方案,从长远来看,您只会伤害自己。了解问题和解决问题的工具。我曾辅导过一些人,如果问题需要从书中的代码示例中稍作调整,他们会吓坏并且不明白如何去做

于 2013-02-01T19:57:06.817 回答