javaScript 去重的方法

1.双重循环

实现方式一

function removeRepeat(arr) {
    let newArr = [];
    for(let i = 0; i <= arr.length; i++) {
        let isRepeat = false;
        for(let j = 0; j <= newArr.lenght; j++) {
            if (arr[i] === newArr[j]) {
                isRepeat = true;
                break;//跳出循环
            }
        }
        if(!isRepeat) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}
复制代码

实现方式二

function removeRepeat(arr) {
    let newArr = [];
    for(let i = 0; i < arr.length; i++) {
        let isRepeat = false;
        for(let j = i + 1; j < arr.length; j++) {
            if (arr[i] === arr[j]) {
                isRepeat = true;
                break;//跳出循环
            }
        }
        if(!isRepeat) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}
复制代码

实现方式三

function removeRepeat(arr) {
    let newArr = [];
    for(let i = 0; i < arr.length; i++) {
        for(let j = i + 1; i < arr.length; i++) {
            if (arr[i] === arr[j]) {
                j = ++i; //先递增后赋值
            }
        }
    }
    return newArr;
}
复制代码

1624976739(1).jpg

2.Array.prototype.indexOf

基本思想:通过数组的filter和indexOf,不是第一个索引值,就判定是重复值。

实现一:

  • 通过数组的filter过滤功能
  • indexOf返回第一个索引值
  • 索引值与当前值相等,过滤进数组
 function removeRepeatFour(arr) {
      return arr.filter((item, index) => {
        return arr.indexOf(item) === index;
      })
    }
let test = removeRepeatFour(allArr);
复制代码

1624978132(1).jpg

实现方式二:

function removeRepeat (arr) {
  let newArray = [];
  arr.forEach(item => {
    if (newArray.indexOf(item) === -1) {
      newArray.push(item);
    }
  });
  return newArray;
}
复制代码

3.Array.prototype.sort()

基本思想:对数组进行排列后,进行判断

实现方式一:

function removeRepeat (arr) {
  const newArray = [];
  arr.sort();
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] !== arr[i + 1]) {
      newArray.push(arr[i]);
    }
  }
  return newArray;
}
复制代码

实现方式二:

function removeRepeat(arr) {
  const newArray = [];
  arr.sort();
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] !== newArray[newArray.length - 1]) {
      newArray.push(arr[i]);
    }
  }
  return newArray;
}
复制代码

4.Array.prototype.includes()

function removeRepeat(arr) {
  const newArray = [];
  removeRepeat.forEach(item => {
    if (!newArray.includes(item)) {
      newArray.push(item);
    }
  });
  return newArray;
}
复制代码

5.Map

实现方式一:

function removeRepeat (arr) {
  const newArray = [];
  const tmp = new Map();
  for(let i = 0; i < arr.length; i++){
        if(!tmp.get(arr[i])){
            tmp.set(arr[i], 1);
            newArray.push(arr[i]);
        }
    }
    return newArray;
}
复制代码

实现方式二:

function removeRepeat(arr) {
  const tmp = new Map();
  return arr.filter(item => {
    return !tmp.has(item) && tmp.set(item, 1);
  })
}
复制代码

Set

Array.prototype.unique = function () {
  return [...new Set(this)];
}
复制代码

注释:本篇文章仅作用于个人笔记所用,单纯整理知识供自己回看。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享