美文网首页
数组去重的几种方法和思路

数组去重的几种方法和思路

作者: 哆啦咿呀哦 | 来源:发表于2020-11-23 20:43 被阅读0次

方法1:遍历数组

var arr = ["c", "a", "z", "a", "x", "a", "a", "z", "c", "x", "a", "x"];

var newArr = [];

for (var i = 0; i < arr.length; i++) {

if (newArr.indexOf(arr[i]) === -1) {

// 不存在, 添加到 newArr 中

newArr.push(arr[i]);

}

}

console.log(newArr);

思路:

遍历 arr,看 arr[i], 在 newArr 中是否存在 indexOf 值-1, 说明不存在

(1) 如果不存在, 添加到 newArr 中

(2) 如果存在, 不用管

方法2:数组下标去重法

var arr = ["c", "a", "z", "a", "x", "a", "a", "z", "c", "x", "a", "x"];

var newArr = [];

for (var i = 0; i < arr.length; i++) {

if (arr.indexOf(arr[i]) == i) {

newArr.push(arr[i]);

}

}

console.log(newArr);

思路:如果当前数组的第i项在当前数组中第一次出现的位置

是i,表示第一次出现,存入新数组中

不是i,那么表示第i项是重复的,忽略掉

indexOf  查找值,在数组中第一次出现的下标

方法3:排序后相邻去重法

var arr = ["c", "a", "z", "a", "x", "a", "a", "z", "c", "x", "a", "x"];

arr.sort();

// console.log(arr);//?["a", "a", "a", "a", "a", "c", "c", "x", "x", "x", "z", "z"]

var newArr = [arr[0]];

for (var i = 1, len = arr.length; i < len; i++) {

if (arr[i] !== newArr[newArr.length - 1]) {

newArr.push(arr[i]);

}

}

console.log(newArr);

思路:

将传入的数组进行排序,相同的元素就会相邻

创建新数组,并arr[0];

再遍历数组,将元素与新数组的最后一个值进行比较,若不同则加入新数组。

方法4:优化遍历数组法

var arr = [1, 3, 4, 5, 3, 4, 8, 9, 8, 4];

for (var i = 0; i < arr.length; i++) {

for (var j = i + 1; j < arr.length; j++) {

if (arr[i] == arr[j]) {

arr.splice(j, 1);

j--;

}

}

}

console.log(arr) //[1,3,4,5,8,9]

思路:

遍历传入的数组,元素与右边的元素依次比较,

若元素有重复,则删除右边重复的元素,

若元素与右边的元素没有重复,即跳出内层循环;将下一个元素当做比较对象

相关文章

  • 数组去重的几种方法和思路

    方法1:遍历数组 var arr = ["c", "a", "z", "a", "x", "a", "a", "z...

  • Array集结号

    实现数组去重的几种方法 数组去重一 数组去重二 利用数组indexof+push实现数组去重 数组去重三 利用对象...

  • 数组去重

    推荐几种数组去重的方法

  • 数组去重4种方法

    怎么把类数组转换为数组? 数组去重4几种方法:

  • 数组去重的几种方法

    数组去重的几种方法 ES6 Set去重(ES6常用) -不修改原数组 不考虑兼容性,这种去重的方法代码最少。这种方...

  • 数组去重几种方法

  • js数组去重的几种方法

    js去重的几种方法: 1.使用indexOf()方法---[a.检查当前数组是否存在;b.比较数组的下标---(借...

  • 数组去重封装

    上次写到了数组去重的几种方式数组去重的几种方式,那么今天就让我们来封装一下数组去重吧。 就在数组原型上封装吧! 源...

  • 面试题

    手写数组去重,多种方法 1:es6set去重 2:indexof filter : 思路:定义一个新数组,并存放原...

  • js数组几种去重的方法

    利用indexOf方法,es6也可以用includes方法 利用对象键值 利用set的不可重复性 (感觉比较简单)...

网友评论

      本文标题:数组去重的几种方法和思路

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