2016-04-21 6 views
0
var textTag = [{text:"3", items:[{name:item1.jpeg}, {name:item2.jpeg}, {name:item3.jpeg}]}, 
       {text:"2", items:[{name:item1.gif}, {name:item2.gif}, {name:item3.png}]}, 
] 

ich ein Ergebnis Array zu bekommen versuche, die wie folgt aussehen:Gruppierung ähnlicher Array-Elemente unter einem Elternteil auf der Grundlage einer Bedingung javascript

text:3 
|_ jpeg 
    |_item1 
    |_item2 
    |_item3 

text:2 
    |_ gif 
     |_item1 
     |_item2 

    |_ png 
     |_item3 

Aber ich habe geschrieben Code, gibt mir die folgende Ausgabe.

text:3 
    |_ jpeg 
     |_item1 
    |_ jpeg 
     |_item2 
    |_ jpeg 
     |_item3 

text:2 
    |_ gif 
     |_item1 
    |_ gif 
     |_item2 
    |_ png 
     |_item3 

Bitte helfen Sie mir das gewünschte Ergebnis

+0

bitte Ihren Code hinzufügen. –

+0

was willst du wirklich ?? –

Antwort

0

Sie müssen einige für sie Gruppierung zu erhalten.

var textTag = [{ text: "3", items: [{ name: 'item1.jpeg' }, { name: 'item2.jpeg' }, { name: 'item3.jpeg' }] }, { text: "2", items: [{ name: 'item1.gif' }, { name: 'item2.gif' }, { name: 'item3.png' }] }], 
 
    grouped = textTag.map(function (a) { 
 
     var o = {}; 
 
     a.items.forEach(function (b) { 
 
      var n = b.name.split('.'); 
 
      o[n[1]] = o[n[1]] || []; 
 
      o[n[1]].push(n[0]); 
 
     }); 
 
     return o; 
 
    }); 
 

 
document.write('<pre>' + JSON.stringify(grouped, 0, 4) + '</pre>');

+0

Das ist großartig. Ich hatte eine andere Frage: Wie kann ich vermeiden, doppelte Einträge im Ergebnis hinzuzufügen: [{text: "3", Elemente: [{name: 'item1.jpeg'}, {name: 'item1.jpeg'}, {name: 'item2.jpeg'}]}. Hier wird item1 zweimal wiederholt. Irgendwelche Ideen pls. Ich werde meinen Code in der Zwischenzeit aktualisieren und Sie wissen lassen, ob es funktioniert. Vielen Dank ! – Mustang

+0

@SAM, bitte ändern Sie die Frage nicht. Fragen Sie nach Bedarf nach einem neuen. –

+0

Ok! Macht Sinn! Danke für Ihre Hilfe ! – Mustang

Verwandte Themen