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


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

    待补充。。。。

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

      

  • 相关阅读:
    Codeforces Canda Cup 2016
    Codeforces Round #377(div 2)
    后缀数组专题
    Codeforces Round #375(div 2)
    Codeforces Round #374(div 2)
    [HDU5902]GCD is Funny(xjb搞)
    [HDU5904]LCIS(DP)
    HDU 1251统计难题
    POJ2104 K-TH NUMBER 传说中的主席树
    poj 3041
  • 原文地址:https://www.cnblogs.com/yizhao/p/14378215.html
Copyright © 2020-2023  润新知