我有一个包含多个子数组的数组形式的数据 - 每个子数组包含多个数组,这些数组由两个成对的整数,一个时间戳和一个值组成。数组示例:
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对第一个子阵列中的值进行求和和平均的有效方法,记住我的数据最终可能包含数百个[时间戳,值]对吗?
非常感谢您的帮助。
答案 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);