JS 根据数组对象中某个字段的值,重组新的数组对象

现在要处理的数组对象

let list = [
    {is_show: true, name: "小哥哥", state: true, trial: false, type: 1},
    {is_show: true, name: "小姐姐", state: true, trial: false, type: 1},
    {is_show: true, name: "二次元", state: true, trial: false, type: 1},
    {is_show: true, name: "风景", state: true, trial: false, type: 1},
    {is_show: true, name: "男生", state: true, trial: false, type: 2},
    {is_show: true, name: "女生", state: true, trial: false, type: 2},
    {is_show: true, name: "动漫", state: true, trial: false, type: 2},
    {is_show: true, name: "人物", state: true, trial: false, type: 3},
    {is_show: true, name: "星空", state: true, trial: false, type: 3},
    {is_show: true, name: "科技", state: true, trial: false, type: 3}
]

希望重组得到下面这个数据结构

[
    {
        type: 1,
        list: [
            {is_show: true, name: "小哥哥", state: true, trial: false, type: 1},
            {is_show: true, name: "小姐姐", state: true, trial: false, type: 1},
            {is_show: true, name: "二次元", state: true, trial: false, type: 1},
            {is_show: true, name: "风景", state: true, trial: false, type: 1},
        ]
    },
    {
        type: 2,
        list: [
            {is_show: true, name: "男生", state: true, trial: false, type: 2},
            {is_show: true, name: "女生", state: true, trial: false, type: 2},
            {is_show: true, name: "动漫", state: true, trial: false, type: 2},
        ]
    },
    {
        type: 3,
        list: [
            {is_show: true, name: "人物", state: true, trial: false, type: 3},
            {is_show: true, name: "星空", state: true, trial: false, type: 3},
            {is_show: true, name: "科技", state: true, trial: false, type: 3}
        ]
    }
]

直接上代码

let list = [
	{is_show: true, name: "小哥哥", state: true, trial: false, type: 1},
	{is_show: true, name: "小姐姐", state: true, trial: false, type: 1},
	{is_show: true, name: "二次元", state: true, trial: false, type: 1},
	{is_show: true, name: "风景", state: true, trial: false, type: 1},
	{is_show: true, name: "男生", state: true, trial: false, type: 2},
	{is_show: true, name: "女生", state: true, trial: false, type: 2},
	{is_show: true, name: "动漫", state: true, trial: false, type: 2},
	{is_show: true, name: "人物", state: true, trial: false, type: 3},
	{is_show: true, name: "星空", state: true, trial: false, type: 3},
	{is_show: true, name: "科技", state: true, trial: false, type: 3}
]
						
let newList = list.map(item => {
	return {type: item.type, data: []}
})
						
// 数组去重
let hash = {};
newList = newList.reduce((item, next) => {
	hash[next.type]? '': hash[next.type] = true && item.push(next);
							
	return item
}, [])
						
//给每个对象的data追加数据
list.forEach((item, index) => {
	for(let i in newList) {
		if(item.type == newList[i].type) {
			newList[i].data.push(item)
		}
	}
})
console.log(newList)

结果

猜你喜欢

转载自blog.csdn.net/qq_42543264/article/details/127277239