javascript的数组怎么去重

数组里面怎么去重这种引用数据类型?多个数组一样了。

img

上面不好处理可以指点一下怎么从下图的数据中得到正确的分组,以parent属性为条件分组,分组之后的数据只有value的值放在新的数组里面,大概和上面的数据一样,只是上面的数据好几个数组相同数据了。

img


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

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632