Javascript - 如何从2D数组中获取index [1]元素的总和

时间:2013-02-01 19:17:49

标签: javascript

为我的开发课程完成家庭作业。 我的部分问题要求我创建一个多维数组(2D)并从每个嵌套数组中获取第二个元素的总和。我怎样才能实现这一目标?这是我的阵列:

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

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

5 个答案:

答案 0 :(得分:2)

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

这可以帮助你完成作业。

更多信息

  1. For loop

答案 1 :(得分: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];

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

答案 2 :(得分:0)

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

a0b0 a0b1 
a1b0 a1b1
a2b0 a2b1

在你的情况下它是

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

因此,为了让吉姆成绩,我们可以查看索引表,它将是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];
    }
}

如果您只是在学习,我不会建议将一堆代码拼凑在一起以产生解决方案,从长远来看,您只会伤害自己。了解问题和解决问题的工具。我已经辅导了一些人,如果一个问题需要从一本书中的代码示例中稍作调整,他们就会惊慌失措并且不明白该怎么做

答案 3 :(得分:0)

使用ECMAScript5 Array.prototype.reduce将数组减少到该总和,

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

使用ECMAScript6 arrow functions

对其进行整理
var sum = studentGrades.reduce((sum, pair) => sum + pair[1], 0);

答案 4 :(得分:0)

您可以使用Alasql JavaScript库:

执行此操作
var res = alasql('SELECT VALUE SUM([1]) FROM ?',[studentGrades]);

试试这个例子at jsFiddle