根据条件 JavaScript 在父级下对类似的数组项进行分组

grouping of similar array items under a parent based on a condition javascript

本文关键字:数组 JavaScript 条件      更新时间:2023-09-26
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

请帮助我获得预期的结果

你需要一些分组。

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