首页 > 编程语言 > 详细

数组去重的几种方法

时间:2020-09-17 14:42:01      阅读:35      评论:0      收藏:0      [点我收藏+]

标签:function   pre   loop   重复   就是   log   

 

let array = [1, 2, 2, "2", "2", "", "", 3, 6, 8, 6, 0, "a", "c", "h", "b"];
let res = [];
// 新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则push进数组。
for (let i = 0; i < array.length; i++) {
  if (res.indexOf(array[i]) == -1) {
    res.push(array[i]);
  }
}

// 双层循环,外层循环元素,内层循环时比较值。值相同时,则删去这个值。
for (let i = 0; i < array.length; i++) {
  for (let j = i + 1; j < array.length; j++) {
    if (array[i] == array[j]) {
      //第一个等同于第二个,splice方法删除第二个
      array.splice(j, 1);
      j--;
    }
  }
}

// 利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对。
let arr = array.sort();
let kkk = [array[0]];
for (let i = 1; i < arr.length; i++) {
  if (arr[i] !== arr[i - 1]) {
    kkk.push(arr[i]);
  }
}

// for和includes
let kkk = [];
for (let i = 0; i < array.length; i++) {
  if (!kkk.includes(array[i])) {
    //includes 检测数组是否有某个值
    kkk.push(array[i]);
  }
}

// filter和indexOf
const bbb = array.filter((item, index, arr) => {
  // 也就是在遍历数组的时候,每次拿当前的元素跟此数组中这个元素第一次出现的位置相比,
  // 如果位置是一致的,就返回当前元素
  return array.indexOf(item, 0) === index;
});
console.log(bbb);

// 递归
const aaa = array;
const len = aaa.length;
// 先排序
aaa.sort(function (a, b) {
  return a - b;
});
function loop(index) {
  if (index >= 1) {
    if (aaa[index] === aaa[index - 1]) {
      aaa.splice(index, 1);
    }
    loop(index - 1);
  }
}
loop(len - 1);
console.log(aaa);

// for和map
let ddd = [];
let map1 = new Map();
for (let i = 0; i < array.length; i++) {
  if (map1.has(array[i])) {
    //判断是有有重复的 有返回true
    map1.set(array[i], true);
  } else {
    map1.set(array[i], false);
    ddd.push(array[i]);
  }
}

// new Set()
console.log([...new Set(array)]);

 

数组去重的几种方法

标签:function   pre   loop   重复   就是   log   

原文:https://www.cnblogs.com/zhangxiaoqiong/p/13684932.html

(0)
(0)
   
举报
评论 一句话评论(0
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号