2016-08-02 4 views
-1

ich zwei JavaScript-Arrays haben:Wie in Javascript de-doppelte Elemente zwei Arrays fusionieren und ihre Mengen summieren

const array1 = [ 
    {id: 01, qnty: 2}, 
    {id: 02, qnty: 1}, 
    {id: 03, qnty: 1} 
]; 

const array2 = [{id: 02, qnty: 3}]; 

ich die Ausgabe sein wollen:

const newArray = [ 
    {id: 01, qnty: 2}, 
    {id: 02, qnty: 4}, 
    {id: 03, qnty: 1}, 
]; 

Die Ausgangsarray sollte habe Artikel mit demselben id entfernt und summiere ihre qnty Werte.

+0

ich downvote nicht, aber Fragen, die (sieht aus wie) HomeWorks- sind Wegthema sind. Sie sollten eine Codebeispiel von dem, was Sie gerade haben, zur Verfügung stellen und aufzeigen, wo Sie Schwierigkeiten haben. –

+0

Ist es nicht klar genug? – HairLessDude

+0

Es ist nicht so, dass es nicht klar genug ist, es ist, dass du es anscheinend gar nicht versucht hast und SO darum bittest, deine Arbeit/Hausaufgaben zu machen. –

Antwort

1

function inArray(arr, obj) { 
 
    for (var i = 0; i < arr.length; i++) { 
 
    if (arr[i].id == obj.id) { 
 
     return i; 
 
    } 
 
    } 
 
    return -1; 
 
} 
 

 

 
const array1 = [{ id: 01, qnty: 2}, { id: 02, 
 
    qnty: 1}, { id: 03, qnty: 1}]; 
 

 

 

 
const array2 = [{ id: 02, qnty: 3}]; 
 

 
var newArray = array1.slice(0); //clone array1 
 
for (var i = 0; i < array2.length; i++) { 
 
    var obj = array2[i]; 
 
    var index = inArray(array1, obj); 
 
    if(index== -1){ 
 
    newArray.push(obj); 
 
    }else { 
 
    newArray[index] = { id: newArray[index].id, qnty: newArray[index].qnty + obj.qnty } 
 
    } 
 
} 
 

 
console.log(newArray);
const newArray = [ {id: 01, qnty: 2}, {id: 02, qnty: 4}, {id: 03, qnty: 1}, ];

+1

Jetzt erweitern, um drei oder vier oder eine beliebige Anzahl zu behandeln von Arrays. Und können Sie sich einen Weg vorstellen, wie Sie es für längere Arrays einfacher und schneller machen können? (Hinweis: Verwenden Sie ein temporäres Objekt mit jeder ID für die Eigenschaftsnamen.) –

Verwandte Themen