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

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

作者: 哆啦咿呀哦 | 来源:发表于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]

    思路:

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

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

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

    相关文章

      网友评论

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

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