多个子数组中特定索引处的值的总和/平均值 - jQuery

时间:2018-03-14 12:25:43

标签: jquery arrays

我有一个包含多个子数组的数组形式的数据 - 每个子数组包含多个数组,这些数组由两个成对的整数,一个时间戳和一个值组成。数组示例:

var data = [
  [
    [1519603200000, 17],
    [1519689600000, 20],
    [1519776000000, 16],
    [1519862400000, 21]
  ],
  [
    [1519603200000, 6],
    [1519689600000, 4],
    [1519776000000, 6],
    [1519862400000, 8]
  ]
]

我需要的是仅来自第一个子数组中数组的所有值(不是时间戳)的总和,即数据[0]

在上面的例子中,将是17 + 20 + 16 + 21 = 74

然后我需要该子数组的这些值的平均值(可能这可以通过将总数除以数据来计算[0] .length - 1)

我很难选择每个数组对的值而不是时间戳。

请有人建议使用jQuery对第一个子阵列中的值进行求和和平均的有效方法,记住我的数据最终可能包含数百个[时间戳,值]对吗?

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

样本:

    $(document).ready(function() {
      var data = [
        [
          [1519603200000, 17],
          [1519689600000, 20],
          [1519776000000, 16],
          [1519862400000, 21]
        ],
        [
          [1519603200000, 6],
          [1519689600000, 4],
          [1519776000000, 6],
          [1519862400000, 8]
        ]
      ];
      var sum = 0;
      
      $(data[0]).each(function() {
        sum += $(this)[1];
        console.log("Added: ", $(this)[1]) 
      });
      
      console.log("Sum is:", sum);
      console.log("The average is:", sum / data[0].length)
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

data是一个数组,因此您将使用data[0]来获取其第一个元素。此元素也是一个数组,因此您将使用.each()循环并对元素求和。

平均值为sum / data[0].length

答案 1 :(得分:1)

您可以使用array#reduce对数组中索引1处的值求和。

var data = [ [ [1519603200000, 17], [1519689600000, 20], [1519776000000, 16], [1519862400000, 21] ], [ [1519603200000, 6], [1519689600000, 4], [1519776000000, 6], [1519862400000, 8] ] ],
    sum = data[0].reduce((sum,a) => sum + a[1], 0),
    average = sum /data[0].length;
console.log(sum, average);