• 09-数组去重


    1. 双循环去重

    var arr = [3, 6, 8, 9, 7, 4, 4, 7, 9, 8, 6, 3];
    // 双循环去重
    function clearRepeat(arr) {
        for (let i = 0; i < arr.length; i++) {
            let cur = arr[i]
            for (let j = i + 1; j < arr.length; j++) {
                if (cur == arr[j]) {
                    arr.splice(j, 1);
                    j--
                }
            }
        }
        return arr;
    }
    let res = clearRepeat(arr);
    console.log(res);

    2.递归去重

    var arr = [3, 6, 8, 9, 7, 4, 4, 7, 9, 8, 6, 3];
    // 递归去重
    function toolFn(arr) {
        let ary = arr;
        let len = arr.length;
        ary.sort((a, b) => a - b);
    
        function clearRepeatDG(index) {
            if (index >= 1) {
                if (ary[index] === ary[index - 1]) {
                    ary.splice(index, 1)
                }
                clearRepeatDG(--index)
            }
        }
        clearRepeatDG(len - 1);
        return ary;
    }
    let resDG = toolFn(arr);
    console.log(resDG);

    方法2:

    var arr = [1, 2, 3, 4, 5, 5, 4, 3, 2, 1, 0, 0, 1];
    function outerFn(arr) {
      let newArr = [];
      let len = arr.length - 1;
      function fn(len) {
        if (len === 0) return;
        if (newArr.indexOf(arr[len]) === -1) {
          newArr.push(arr[len]);
        }
        fn(--len);
      }
      fn(len);
      return newArr;
    }
    
    var res = outerFn(arr);
    console.log(res);

     3.利用对象的key具有唯一性去重

    var arr = [3, 6, 8, 9, 7, 4, 4, 7, 9, 8, 6, 3];
    // 利用对象的key具有唯一性去重
    function useObjectFn(arr) {
        let obj = {};
        let newArr = [];
        for (let i = 0; i < arr.length; i++) {
            let cur = arr[i];
            obj[cur] = arr[i]
        }
        for (let key in obj) {
            newArr.push(obj[key])
        }
        return newArr;
    }
    let resObj = useObjectFn(arr);
    console.log(resObj);
    var arr = [3, 6, 8, 9, 7, 4, 4, 7, 9, 8, 6, 3];
    // 常规写法
    function useObjectFn2(arr) {
        let obj = {};
        for (let i = 0; i < arr.length; i++) {
            let cur = arr[i];
            if (obj[cur] === cur) {
                arr.splice(i, 1);
                i--;
                continue;
            }
            obj[cur] = cur;
        }
        return arr
    }
    let resObj2 = useObjectFn2(arr);
    console.log(resObj2);
  • 相关阅读:
    Unity 状态机切换
    Unity3d 血条脚本
    最简单的Python群聊
    EFCore 多字段排序分页法
    搭建react+redux+vscode+typescript开发环境
    C# 4格A*自动寻径
    Sql删除表中多余的重复记录
    ABP弹出提醒用户的错误信息
    百度地图 驾车路线编辑粗浅实例
    .NetCore3.1 WebApi中Swagger配置
  • 原文地址:https://www.cnblogs.com/haoqiyouyu/p/14902712.html
Copyright © 2020-2023  润新知