0

C#には.Sum(Predicate)、ラムダ式を使用してオブジェクトのコレクションに対して合計を行うことができるメソッドがあります。たとえば、次のオブジェクトのセットがある場合(簡単にするためにJSONを使用)

[
  {
    "Id": 1,
    "Sub": {
      "Size": 1
    }
  },
  {
    "Id": 2,
    "Sub": {
      "Size": 3
    }
  }
]

そして、私はサイズの合計を取得したかった、私はすることができましたSum(n => n.Sub.Size)

javascriptでこのようなことをする方法はありますか?私はその言語に本当に慣れていない(そして弱い)ので、同様の機能を実行するのに苦労しています。私はjQueryを使用しているので、何でも開くことができます。

4

3 に答える 3

3
var result = arr.reduce(function(a, b) {
    return a + b.Sub.Size;
}, 0);

デモ: http: //jsfiddle.net/sUCTK/

ドキュメント:MDN

于 2013-01-01T23:28:23.970 に答える
0

JavaScriptでは、配列を手動でステップ実行し、値を合計する必要があります。

var sum = 0;
for (var i in a) {
  sum += a[i].Sub.Size
}
// sum now contains the total
于 2013-01-01T23:27:33.837 に答える
0

クロスブラウザの互換性のために、これを行うことができます:

var sum = function(arr, callback, initial_value) {
    if (arguments.length < 3) {
        initial_value = 0;
    }
    var ret = initial_value;

    for (var i = 0; i < arr.length; i++) {
        ret += callback(arr[i]);
    }        

    return ret;    
};

console.log(sum(arr, function(element) {
    return element.Sub.Size;
});

これにより、適切なタイプを渡すことで、文字列などの他の合計可能なオブジェクトを合計することもできますinitial_value

@zerkmsは、新しいECMAScript標準を使用して物事をより適切に合計する方法を示しています。

于 2013-01-01T23:29:09.240 に答える