0
点赞
收藏
分享

微信扫一扫

JavaScript - 有序去重和无序去重

妖妖妈 2022-03-25 阅读 117
javascript

 个人开发的塔罗牌占卜小程序:【问问塔罗牌】 快来瞧瞧吧!

 

有序去重 ( 采用JS对象自带的key排序 )

    function OrderlySort(_list = []) {
        const current_list = [..._list];
        let bl = !!current_list.length;
        const _obj = {};
        while (bl) {
            _obj[current_list.shift()] = true;
            bl = !!current_list.length;
        }
        return Object.keys(_obj);
    }

无序去重

 function OrderlyDefault(_list) {
        const current_list = [..._list];
        const filter_list = [];
        const _obj = {};
        let bl = !!current_list.length;
        while (bl) {
            const key = current_list.shift();
            if (!_obj[key]) {
                _obj[key] = true;
                filter_list.push(key);
            }
            bl = !!current_list.length;
        }
        return filter_list;
    }

深度-有序去重

 function OrderlySortDepp(_list = []) {
        const current_list = [..._list];
        let bl = !!current_list.length;
        const _obj = {};
        while (bl) {
            const item = current_list.shift();
            if (Array.isArray(item)) {
                current_list.push(...item);
            } else {
                _obj[item] = true;
            }
            bl = !!current_list.length;
        }
        return Object.keys(_obj);
    }

深度-无序去重

 function OrderlyDefaultDeep(_list) {
        const current_list = [..._list];
        const filter_list = [];
        const _obj = {};
        let bl = !!current_list.length;
        while (bl) {
            const item = current_list.shift();
            if (Array.isArray(item)) {
                current_list.push(...item);
            }
            else if (!_obj[item]) {
                _obj[item] = true;
                filter_list.push(item);
            }
            bl = !!current_list.length;
        }
        return filter_list;
    }

demo

 const list = [2, 3, 1, 2, 4, 6, 7, 8, 9, 1];
    const list2 = [23, 45, 56, list, 2, 4, 3, 1, 11];
    function logJSON(){
        console.log(JSON.stringify(arguments))
    }
    logJSON(OrderlySort(list));
    logJSON(OrderlyDefault(list));
    logJSON(OrderlySortDepp(list2));
    logJSON(OrderlyDefaultDeep(list2));
    
    // 输出:
    {"0":["1","2","3","4","6","7","8","9"]}
    {"0":[2,3,1,4,6,7,8,9]}
    {"0":["1","2","3","4","6","7","8","9","11","23","45","56"]}
    {"0":[23,45,56,2,4,3,1,11,6,7,8,9]}
举报

相关推荐

0 条评论