2016-04-21 116 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}]}, 
] 

我試圖得到結果陣列是這樣的一個情況:分組基於JavaScript

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

text:2 
    |_ gif 
     |_item1 
     |_item2 

    |_ png 
     |_item3 

但我寫的代碼,讓我以下輸出。

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

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

請幫我得到期望的結果

+0

請添加您的代碼。 –

+0

你真的想要什麼? –

回答

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' }] }], 
 
    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

太好了。我還有一個問題:如何避免在結果中添加重複項:[{text:「3」,items:[{name:'item1.jpeg'},{name:'item1.jpeg'},{name: 'item2.jpeg'}]}。這裏item1重複兩次。任何想法請。我會在同一時間更新我的代碼,並讓您知道它是否正常工作。謝謝 ! – Mustang

+0

@SAM,請不要改變這個問題。如有必要,請問一個新的。 –

+0

好的!說得通!謝謝你的幫助 ! – Mustang