数组里为对象时去重的几种方法,总有一种适合你

1.双重for循环加flag

function duplicate1(arr) {
    let result = [];
    for(let i =0 ; i< arr.length ; i++){
        let flag = true;
        for(let j = 0 ; j< result.length ; j++){
            if(arr[i].recordId === result[j].recordId){
                flag = false;
            }
        }
        if(flag){
            result.push(arr[i]);
        }
    }
    return result;
}

2.新建一个对象,将数组中每一项的键对应的值作为新对象的键,遍历数组判断新对象是否存在键,不存在放入数组中

function duplicate2(arr) {
    let obj= {}, result= [];
    for (let i = 0; i < arr.length; i++) {
        let item = arr[i];
        if (!obj[item.recordId]) {
            obj[item.recordId] = result.push(item);
        }
    }
    return result;
}

3.利用归并方法reduce

function duplicate3(arr) {
    let obj = {}, result = [];
    result = arr.reduce((prev, cur) => {
        obj[cur.recordId] ? '' : obj[cur.recordId] = prev.push(cur);
        return prev;
    }, [])
    return result;
}

待补充。。。。

大佬分享下你们的好方法啊

 

  

posted @ 2021-02-05 15:57  小新的蜡笔  阅读(500)  评论(0编辑  收藏  举报