5

array[time, value];我需要从这个二维数组中求和/求和?

var array =[ 
    [1361824790262, 90.48603343963623],
    [1361828390262, 500.18687307834625],
    [1361831990262, 296.05108177661896], 
    [1361835590262, 423.1198309659958], 
    [1361839190262, 11.86623752117157], 
    [1361842790262, 296.38282561302185], 
    [1361846390262, 424.31847417354584], 
    [1361849990262, 100.07041704654694], 
    [1361853590262, 434.8605388402939],
    [1361857190262, 434.8220944404602],
    [1361860790262, 183.61854946613312]
];
var sum = 0;
//console.log(array.length);
for (var i = 0; i < array.length; i++) {
    //console.log(array[i]);
    for (var j = 0; j < array[i].length; j++) {
        console.log(array[j][i]);
        sum += array[j][i];
    }
}
console.log(sum);

JsFiddle 的链接

4

5 回答 5

11

您的问题标题暗示您想要对二维数组求和 - 这是您将如何做到的:

array.reduce(function(a,b) { return a.concat(b) }) // flatten array
     .reduce(function(a,b) { return a + b });      // sum

仅对您在编辑中明确说明的值部分求和更容易:

array.map(function(v) { return v[1] })         // second value of each
     .reduce(function(a,b) { return a + b });  // sum
于 2013-02-26T07:13:09.413 回答
1

不需要两个循环。这将遍历数组并为您提供每个时间/值对。如果每个时间值对,只需对第一个索引(第二项)求和。

var sum = 0;
for(var i=0;i<array.length;i++){
    console.log(array[i]);
    sum += array[i][1];
}
console.log(sum);

输出:

[1361824790262, 90.48603343963623] 
[1361828390262, 500.18687307834625]
[1361831990262, 296.05108177661896]
[1361835590262, 423.1198309659958] 
[1361839190262, 11.86623752117157] 
[1361842790262, 296.38282561302185]
[1361846390262, 424.31847417354584]
[1361849990262, 100.07041704654694]
[1361853590262, 434.8605388402939] 
[1361857190262, 434.8220944404602] 
[1361860790262, 183.61854946613312]
3195.7829563617706 
于 2013-02-26T06:59:09.870 回答
0
    Sum_of_2d_array(arr)
    {
        int sum_time =0;
        int sum_value=0;

        for(i=0;i<arr.length;i++)
        {
            sum_time = sum_time + arr[i,0];
        }
        print(sum_time);

        for(i=0;i<arr.length;i++)
        {
            sum_value = sum_value + arr[i,1];
        }
        print(sum_value);
    }

    If I understood your question correctly. I think this is what you want.
于 2013-02-26T07:06:56.860 回答
0
var arr = [[1361824790262, 90.48603343963623],
[1361828390262, 500.18687307834625],
[1361831990262, 296.05108177661896], 
[1361835590262, 423.1198309659958], 
[1361839190262, 11.86623752117157], 
[1361842790262, 296.38282561302185], 
[1361846390262, 424.31847417354584], 
[1361849990262, 100.07041704654694], 
[1361853590262, 434.8605388402939],
[1361857190262, 434.8220944404602],
[1361860790262, 183.61854946613312]];

var sum = 0;
 for(var i=0;i<arr.length;i++){
    for(var j=0;j<arr[i].length;j++){
        sum += arr[i][j];
    }
}
console.log(sum);

这是获取总数的解决方案。我已经测试过了。

于 2013-02-26T07:08:46.023 回答
0
  1. 循环遍历主数组。
  2. 循环这些嵌套数组以访问数字。
  3. 将这些数字添加到变量中。(和)
function sum(array) {
  let sum = 0

  for (let i = 0; i < array.length; i++) {
    for (let j = 0; j < array[i].length; j++) {
      sum = sum + array[i][j]
    }
  }
  return sum
}

console.log(
  sum([
    [1, 1],
    [2, 2],
    [5, 5],
  ])
) //22

就是这样:) 祝你有美好的一天!

于 2021-09-18T11:35:40.377 回答