对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函数。