2016-10-24 5 views
3

Ich habe ein Array wie folgt.JS Wie reduziere ich auf Array mit mehreren numerischen Werten

Und ich möchte mit einem Array wie diesem enden, das alle Spalten dieses Arrays aggregiert, um so zu enden.

[{ 
    PropertyOne : 4, 
    PropertyTwo : 10 
}} 

Wenn es eine einzelne Spalte Ich weiß, ich .reduce verwenden könnte, aber kann nicht sehen, wie ich mit mehreren Spalten tun könnte?

+1

Wie erhalten Sie PropertyOne: 6? –

+0

Sie haben Zugriff auf das vollständige Objekt in Ihrem Rückruf reduzieren. Akkumulieren Sie für jede Eigenschaft und geben Sie das vollständige Objekt zurück. – ste2425

+0

Sollte es nicht 'PropertyOne: 3' sein, da' 1 + 2 = 3'? – Barmar

Antwort

7
var array = [{ 
    PropertyOne : 1, 
    PropertyTwo : 5 
}, 
{ 
    PropertyOne : 2, 
    PropertyTwo : 5 
}]; 
var reducedArray = array.reduce(function(accumulator, item) { 
    // loop over each item in the array 
    Object.keys(item).forEach(function(key) { 
    // loop over each key in the array item, and add its value to the accumulator. don't forget to initialize the accumulator field if it's not 
    accumulator[key] = (accumulator[key] || 0) + item[key]; 
    }); 

    return accumulator; 
}, {}); 
+0

Sie können dies einfach in ein Array einfügen, um das zu erhalten, wonach Sie speziell in Ihrer Frage fragen (Array eines Objekts) –

+0

@ExplosionPills, guter Punkt! Das habe ich vermisst. 'var reducedArray = [array.reduce (/ * ... * /)];' –

Verwandte Themen