对javascript中对象集合中的列求和
我有一组类似数组的对象,如下所示:对javascript中对象集合中的列求和,javascript,underscore.js,Javascript,Underscore.js,我有一组类似数组的对象,如下所示: a = [[1,2],[3,4],[5,6],[7,8]] 我想对列进行求和(如果你认为这是一个4x2数组),这样: col1_sum = 16 col2_sum = 20 用JS做这件事最好的方法是什么 我尝试使用下划线的reduce函数,如下所示: var col1_sum =_.reduce(a, function(memo,obj){ return memo + parseFloat(obj[0]);},0) 但我得到了一个“未定义”的错误 有什
a = [[1,2],[3,4],[5,6],[7,8]]
我想对列进行求和(如果你认为这是一个4x2数组),这样:
col1_sum = 16
col2_sum = 20
用JS做这件事最好的方法是什么
我尝试使用下划线的reduce函数,如下所示:
var col1_sum =_.reduce(a, function(memo,obj){ return memo + parseFloat(obj[0]);},0)
但我得到了一个“未定义”的错误
有什么想法吗?谢谢你。你总可以把它踢得老派一点。虽然不漂亮,但它很管用
col1_sum = 0;
col2_sum = 0;
for (var i = 0; i < a.length; ++i) {
col1_sum += a[i][0];
col2_sum += a[i][1];
}
你可以把它踢得老派一点。虽然不漂亮,但它很管用
col1_sum = 0;
col2_sum = 0;
for (var i = 0; i < a.length; ++i) {
col1_sum += a[i][0];
col2_sum += a[i][1];
}
你也可以把它踢到新学校:
var sumColumnJS = function sumColumnJS(array, col) {
var sum = 0;
array.forEach(function (value, index, array) {
sum += value[col];
});
return sum;
};
或者使用\每个数组迭代器:
sumColumn_ = function sumColumn_(array, col) {
var sum = 0;
_.each(a, function (item) {
sum += item[col];
});
return sum;
};
工作演示:您也可以将其踢到新学校:
var sumColumnJS = function sumColumnJS(array, col) {
var sum = 0;
array.forEach(function (value, index, array) {
sum += value[col];
});
return sum;
};
或者使用\每个数组迭代器:
sumColumn_ = function sumColumn_(array, col) {
var sum = 0;
_.each(a, function (item) {
sum += item[col];
});
return sum;
};
工作演示:简单的迭代,就像在任何传统语言中一样
var col1_sum = 0, col2_sum = 0, row;
for (row in a)
{
col1_sum += a[row][0];
cos2_sum += a[row][1];
}
var col1_sum=0,col2_sum=0,行;
用于(a行)
{
col1_sum+=a[行][0];
cos2_sum+=a[行][1];
}
简单的迭代,就像在任何传统语言中一样
var col1_sum = 0, col2_sum = 0, row;
for (row in a)
{
col1_sum += a[row][0];
cos2_sum += a[row][1];
}
var col1_sum=0,col2_sum=0,行;
用于(a行)
{
col1_sum+=a[行][0];
cos2_sum+=a[行][1];
}
我用下划线reduce代码制作了一个简单的JSFIDLE,它似乎工作得很好:
您确定在代码的这一点上定义了“a”吗?我用下划线reduce代码制作了一个简单的JSFIDLE,它似乎工作正常:
您确定在代码的那个点定义了“a”吗?我会这样做
a = [[1,2],[3,4],[5,6],[7,8]]
col1_sum = _.sum(_.map(a,0))
col2_sum = _.sum(_.map(a,1))
我会这么做的
a = [[1,2],[3,4],[5,6],[7,8]]
col1_sum = _.sum(_.map(a,0))
col2_sum = _.sum(_.map(a,1))
谁需要jQuery。每个人?
可能是拥有jQuery但不想填充Array.forEach支持的人IE@Fabr我知道,我知道。我当时很轻率。我经常使用jQuery.each,以至于忘记了Array.forEach.Heheh。没错,虽然我经常使用jQuery的each/map/grep,但在开发新应用程序时,ES5数组方法非常好用。谁需要jQuery?each?
可能是那些拥有jQuery的人,他们不想填充Array.forEach的支持IE@Fabr我知道,我知道。我当时很轻率。我使用jQuery.each太多了,以至于我忘记了Array.forEach.Heheh是的,虽然我经常使用jQuery的each/map/grep,但ES5数组方法在开发新应用程序时非常好用。不过,你可能不应该在数组上使用for…in
。请参见,例如,您可能不应该在数组上使用for…in
。请参见,例如,用户需要下划线js中的解决方案。sum()不是underline.js函数。用户希望在underline js中找到解决方案。sum()不是下划线.js函数。