美文网首页
js数组去重

js数组去重

作者: 蚊小文 | 来源:发表于2021-09-08 15:48 被阅读0次

前端面试的时候,面试官经常问到你知道数组去重么?知道几种?如果你能答出10种,面试官肯定会对你刮目相看。接下来,我就将总结的11种数组去重方法一一列出来!

1.利用ES6 new Set()去重

这里就有两种方法:

  • new Set()结合Array.from()
function unique(arr) {
   return Array.from(new Set(arr));
}
  • new Set()结合[...]
function unique(arr) {
  return [...new Set(arr)];
}

2、sort排序

  • sort()结合push()
function unique(arr) {
  let newArr = [];
  arr = arr.sort();
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] !== arr[i + 1]) {
      newArr.push(i);
    }
  }
  return newArr;
}
  • sort()结合splice()
function uinque(arr) {
  arr = arr.sort();
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === arr[i + 1]) {
      arr.splice(i, 1);
      i--;
    }
  }
  return arr;
}

3、for双重循环 splice()

function unique(arr) {
  for (let i = 0; i < arr.length; i++) {
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[i] === arr[j]) {
        arr.splice(i, 1);
        i--;
      }
    }
  }
  return arr;
}

4、indexOf()

function unique(arr) {
  let newArr = [];
  for (let i = 0; i < arr.length; i++) {
    if (newArr.indexOf(arr[i]) === -1) {
      newArr.push(arr[i]);
    }
  }
  return newArr;
}

5、利用对象的属性不能相同的特点进行去重

function unique(arr) {
  let obj = {};
  let newArr = [];
  for (let i in arr) {
    if (!obj[arr[i]]) {
      newArr.push(arr[i]);
      obj[arr[i]] = 1;
    } else {
      obj[arr[i]] = i++;
    }
  }
  return newArr;
}

6、includes()结合push()

function unique(arr) {
  let newArr = [];
  for (let i = 0; i < arr.length; i++) {
    if (!newArr.includes(arr[i])) {
      newArr.push(arr[i]);
    }
  }
  return newArr;
}

7、filter过滤

function unique(arr) {
  arr = arr.filter((item, index) => {
    return arr.indexOf(item) === index;
  });
  return arr;
}

8、递归

function unique(arr) {
  arr = arr.sort();
  function loop(index) {
    if (index >= 1) {
      if (arr[index] === arr[index - 1]) {
        arr.splice(index, 1);
      }
      loop(index - 1);
    }
  }
  loop(arr.length - 1);
  return arr;
}

9、利用Map数据结构去重

function unique(arr) {
  let map = new Map();
  newArr = [];
  for (let i = 0; i < arr.length; i++) {
    if (!map.has(arr[i])) {
      map.set(arr[i], false);
      newArr.push(arr[i]);
    }
  }
  return newArr;
}

相关文章

  • 数组的去重和数组中对象的去重

    数组中对象去重 方式1 jq方式 方式2 原生js方式 普通数组的去重 方式1 普通的数组去重js 方式2 Se...

  • js数组去重、对象数组去重

    普通数组去重 一、普通数组去重 方法一:遍历数组法 方法二:排序法 方法三:对象法 对象数组去重 方法一:将对象数...

  • js数组去重

    Set结构去重 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 向 Se...

  • JS数组去重

    方法1:两层for循环,外层循环原数组,内层循环时进行比较。 方法2:利用对象的属性不能相同的特点去重 方法3:利...

  • js数组去重

  • js数组去重

    1.利用对象的属性唯一性去重 2.利用es6的Set

  • js数组去重

  • js 数组去重

  • JS数组去重

    方法一:遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 ...

  • js数组去重

    方法一 (es6 set方法,简单粗暴) 方法二 创建空数组,用indexOf方法检索,没有的话插入新数组中 方...

网友评论

      本文标题:js数组去重

      本文链接:https://www.haomeiwen.com/subject/uppvwltx.html