0

次のような配列のようなオブジェクトのコレクションがあります。

a = [[1,2],[3,4],[5,6],[7,8]]

sum the columnsそして、 (これを4x2配列と考える場合)次のようにしたいと思います:

col1_sum = 16
col2_sum = 20

これを行う最善の方法はJSですか?

underscore's _.reduce次のような関数を使用してみました:

var col1_sum =_.reduce(a, function(memo,obj){ return memo + parseFloat(obj[0]);},0)

しかし、「未定義」エラーが発生します

何か案は?ありがとうございました。

4

5 に答える 5

3

あなたはいつでもそれを古い学校で蹴ることができます。きれいではありませんが、機能します。

col1_sum = 0;
col2_sum = 0;
for (var i = 0; i < a.length; ++i) {
    col1_sum += a[i][0];
    col2_sum += a[i][1];
}

私の他の考えは、jQuery のeach関数を使用することでしたが、jQuery ソリューションを探しているのではないでしょうか?

編集 - 誰が必要jQuery.eachですか? JavaScript を使用するだけArray.forEachです:

var col1_sum = 0;
var col2_sum = 0;

a = [[1,2],[3,4],[5,6],[7,8]];
a.forEach(function(element, index, array) { col1_sum += element[0]; col2_sum += element[1]; });

alert(col1_sum);
alert(col2_sum);
于 2013-07-09T21:05:04.853 に答える
1

新しい学校をキックすることもできます:

var sumColumnJS = function sumColumnJS(array, col) {
    var sum = 0;
    array.forEach(function (value, index, array) {
        sum += value[col];
    });
    return sum;
};

または_.each配列反復子を使用します。

sumColumn_ = function sumColumn_(array, col) {
    var sum = 0;
    _.each(a, function (item) {
        sum += item[col];
    });
    return sum;
};

実際のデモ: http://jsfiddle.net/HTqvf/

于 2013-07-09T21:11:37.523 に答える
-1

私はこれをします。

a = [[1,2],[3,4],[5,6],[7,8]]
col1_sum = _.sum(_.map(a,0))
col2_sum = _.sum(_.map(a,1))
于 2016-04-15T16:48:36.680 に答える