基于条件javascript对父类下的类似数组项进行分组

时间:2016-04-21 19:27:45

标签: javascript arrays loops

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

我正在尝试获得一个如下所示的结果数组:

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

请帮助我获得理想的结果

1 个答案:

答案 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>');