2017-02-04 5 views
1

Wenn ich ein Array wie gehabt:Benötigen Sie Hinzufügen/Hilfe Elemente in Array kombiniert

var array = [[1,"GOOG",4],[1,"GOOG",6],[2,"GOOG",4],[2,"FB",4]]; 

Mit Javascript, wie könnte ich es in ein Array drehen, in der alle Elemente den gleichen zweiten Wert in Array mit [i] [1] (in dem Beispiel der ersten 3 haben den gleichen Wert von GOOG und deren dritte Wert Array erhalten [i] [2] addiert und kombiniert in der folgenden Anordnung resultierende

var array = [["GOOG",14],["FB",4]]; 

Edit:. Eigentlich muss ich Alle Elemente, die mit dem Array [i] [1] übereinstimmen, wurden hinzugefügt und kombiniert

+0

Mögliches Duplikat [Was die effizienteste Methode ist auf einer JavaScript-Array von Objekten GROUPBY?] (Http://stackoverflow.com/questions/14446511/what-is-the-most -efficient-method-to-groupby-on-javascript-array-of-objects) –

Antwort

1

var array = [[1,"GOOG",4],[1,"GOOG",6],[2,"GOOG",4],[2,"FB",4]]; 
 

 
var result = array.reduce(function(acc, item) { 
 
    // check if an item with the same second (item[1]) value already exist 
 
    var index = -1; 
 
    acc.forEach(function(e, i) { 
 
    if(e[0] == item[1]) 
 
     index = i; 
 
    }); 
 
    
 
    // if it does exist 
 
    if (index != -1) 
 
    acc[index][1] += item[2]; // add the value of the current item third value (item[2]) to it's second value (acc[index][1]) 
 
    // if it does not 
 
    else 
 
    acc.push([item[1], item[2]]); // push a new element 
 

 
    return acc; // return the accumulator (see reduce docs) 
 
}, []); 
 

 
console.log(result);

Verwandte Themen