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

 

posted @ 2021-06-19 13:30  猎奇游渔  阅读(51)  评论(0编辑  收藏  举报