2016-08-10 2 views
-1

Ich habe mein Array wie folgt aufgebaut.Wie Array in Javascript zusammenführen?

var myArray = []; 
for(var i = 0; i < data.length; i++) 
{ 
    var product = data[i][0]; 
    var size = data[i][1]; 
    myArray.push({product:product, value:size}) 
} 

Wie die data ist aus dem Anwendungsbereich konstruiert wurde. Wenn ich myArray durchschlinge, erhalte ich das folgende Ergebnis in der console.log.

for(var i = 0; i < myArray.length; i++) 
{ 
    var product = myArray[i].product; 
    var size = myArray[i].value; 
    console.log(product + ' => ' + size); 
} 

Shoe A => S 
Shoe A => M 
Shoe B => XS 
Shoe B => S 
Shoe B => M 
Shoe C => M 
Shoe C => LG 
Shoe D => S 
Shoe D => M 
Shoe D => LG 
Shoe D => XL 

Wie soll ich tun, um das folgende Ergebnis zu erhalten?

Shoe A => [S, M] 
Shoe B => [XS, S, M] 
Shoe C => [M, LG] 
Shoe D => [S, M, LG, XL] 

Ich neige dazu, myArray an ein PHP-Handler schreiben AJAX.

+0

Ist die Reihenfolge von 'Produkt' wichtig? – thefourtheye

+0

Nein, die Reihenfolge des Produkts spielt keine Rolle. –

+0

Warum haben die Leute abgelehnt, wenn ich keine Lösung finde? –

Antwort

2

Um gewünschte Ausgabe in einzelner Schleife zu erhalten:

Schuh A => [S, M]

Schuh B => [XS, S, M]

Schuh C => [M, LG]

Schuh D => [S, M, LG, XL]

Sie können diese Lösung versuchen. Verwenden Sie Hash anstelle von Array.

var myArray = {}; 

for(var i = 0; i < data.length; i++) 
{ 
    var product = data[i][0]; 
    var size = data[i][1]; 
    if(myArray[product] === undefined) { 
     myArray[product] = [] 
    } 
    myArray[product].push(size) 
} 
+0

.reduce() 'dafür gemacht wurde, andere sehen Antworten. – Martin

0

Sie sollten in der Lage sein Array.reduce() zu verwenden, um jeden Wert zu einem neuen Object hinzuzufügen:

[ 
    {product:'shoe a', value:'L'}, 
    {product:'shoe b', value:'M'}, 
    {product:'shoe b', value:'S'} 

].reduce(function(memo, item) { 
    var arr = memo[item.product] || []; 
    arr.push(item.value); 
    memo[item.product] = arr; 
    return memo 
}, {}) 
0

Ich denke, Sie eine Struktur wie folgt aufbauen wollen:

var oData = { 
    A : [Some Sizes], 
    B : [Some Sizes] ... 
} 

wo A und B deine Produkte. Also, wenn Sie eine Schleife über Ihre ersten Daten, die Sie brauchen, um:

var sSize = "size you want to add"; 
    if(oData[A] === undefined){ 
     oData.A = [sSize]; 
    }else{ 
     oData[A].push(sSize); 
    } 
0

Ausgabe Array-Liste sollte Objekt wie dieses {Namen haben: "product", Größe: [{ "productSize"}]

Blick Beispiel ist aaa Ausgangsarray

var aaa = []; 
     var names = []; 

     for(var i = 0; i < myArray.length; i++) 
     { 
       if(names.indexOf(myArray[i].product)>-1){ 
         for(var j=0; j< aaa.length; j++){ 
          if(aaa[j].name == myArray[i].product){ 
           aaa[j].size.push(myArray[i].value) 
          } 
        } 
      } 
      else{ 
       var ppp = {}; 
       ppp.name = ""; 
       ppp.size = []; 
       ppp.name = myArray[i].product; 
       ppp.size.push(myArray[i].value); 
       names.push(ppp.name); 
       aaa.push(ppp); 
      } 
     } 

     for(var i=0; i<aaa.length; i++){ 
     console.log(aaa[i]); 
     } 
Verwandte Themen