数组里面怎么去重这种引用数据类型?多个数组一样了。
上面不好处理可以指点一下怎么从下图的数据中得到正确的分组,以parent属性为条件分组,分组之后的数据只有value的值放在新的数组里面,大概和上面的数据一样,只是上面的数据好几个数组相同数据了。
let list = [
{ value: null, parent: null },
{ value: '682395', parent: null },
{ value: '971824', parent: null },
{ value: '891628', parent: null },
{ value: '276312', parent: null },
{ value: '785312', parent: '682395' },
{ value: '981726', parent: '682395' },
{ value: '217241', parent: '785312' },
{ value: '783102', parent: '785312' },
{ value: '412842', parent: '981726' },
]
let newlist = [];
let kv = {};//记录parent值对应的newlist中下标
for (let item of list) {
if (kv[item.parent] === undefined) {
kv[item.parent] = newlist.length;
newlist.push([]);
}
newlist[kv[item.parent]].push(item.value)
}
console.log(list,newlist)
const data = [
{ name: '全部分类', value: null, parent: null },
{ name: '视频', value: '682395', parent: null },
{ name: '音频', value: '971824', parent: null },
{ name: '流量', value: '891628', parent: null },
{ name: '编辑', value: '276312', parent: null },
{ name: '原创', value: '785312', parent: '682395' },
{ name: '改编', value: '981726', parent: '682395' },
{ name: '美食', value: '217241', parent: '785312' },
{ name: '科技', value: '783102', parent: '785312' },
{ name: '动画', value: '412842', parent: '981726' },
]
const result = []
const findParent = (child) => {
const target = data.find(item => item.value == child.parent)
if(target != child)
return target;
else
return null;
}
data.forEach(item => {
const parent = findParent(item)
if(!parent)
result.push(item)
else {
if(!parent.children)
parent.children = [];
parent.children.push(item);
}
});
console.log(result);