首页 > 解决方案 > 是否可以对这种数组进行分组?[Javascript]

问题描述

我做了以下数组。

我需要按类别对项目进行分组。

可以按类别分组吗?

我正在尝试和思考,但太难了。

我应该更改数组格式以使其简单吗?

[
    {
        id: 1,
        name: apple,
        category: {
            name: 'fruit'
        }
    },
    {
        id: 2,
        name: orange,
        category: {
            name: 'frit'
        }
    },
    {
        id: 3,
        name: cucumber,
        category: {
            name: 'vegetable'
        }       
    },
    {
        id: 4,
        name: chicken,
        category: {
            name: 'meat'
        }       
    },
]

我想要的结果是

[
    {
        category: fruit,
        items: [
            {
                id: 1,
                name: apple,
            },
            {
                id: 2,
                name: orange,
            },
        ]
    },
    {
        category: vegetable,
        items: [
            {
                id: 3,
                name: cucumber,
            },
        ]
    },
    {
        category: meat,
        items: [
            {
                id: 4,
                name: chicken,
            },
        ]
    },
]

感谢 感谢 感谢 感谢 感谢 感谢 感谢 感谢 感谢 感谢 感谢 感谢 感谢 感谢 感谢 感谢 感谢 感谢 感谢

标签: javascript

解决方案


您需要编写一个方法来遍历您的数组并按类别排列项目。像这样的东西:

function groupByCategory (array) {
    let groupedArray = [];
    for (const item of array)
        if (item.category.name) {
            if (!groupedArray[category.name]) groupedArray[category.name] = [];
            groupedArray[category.name].push(item);
    }
    return groupedArray;
}

推荐阅读