现在要处理的数组对象
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)
结果