2016-04-21 71 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