JS中数组去重的几种方式

1,549 阅读1分钟

1、利用 ES6 新特性,Set结构去重,返回的是 Set 结构类型数据,再利用【扩展运算符】或者【Array.from()】方法转换为真正的数组结构

  // 【方法一】 es6 Set结构
  let arr = ["2", "3", "5", "2", "8", "7", "0", "3", "5"];
  let set = new Set(arr);
  /*
   类数组(set)转化为真正的数组的方法:1、[...set]; 2、Array.from(set);
  */
  let result = [...set]; // ["2", "3", "5", "8", "7", "0"]
  /* 或者 */
  let result_1 = Array.from(set); // ["2", "3", "5", "8", "7", "0"]

2、利用数组的 indexOf() 方法,检索元素是否存在于数组中。若存在,返回该元素在数组中的索引;否则返回 -1;

  //【方法二】 数组的 indexOf() 方法
  let arr = ["2", "3", "5", "2", "8", "7", "0", "3", "5"];
  let newArr = [];
  for (let i = 0; i < arr.length; i++) {
     if (newArr.indexOf(arr[i]) === -1) {
        // arr[i] 不存在于newArr数组中
        newArr.push(arr[i]);
      }
  }
  console.log(newArr); // ["2", "3", "5", "8", "7", "0"]

3、原数组通过 indexOf() 方法检索元素首次出现的位置

   // 【方法三】 数组下标方法
  let arr = ["2", "3", "5", "2", "8", "7", "0", "3", "5"];
  let newArr = [];
  for (let i = 0; i < arr.length; i++) {
     if (arr.indexOf(arr[i]) === i) {
       // 说明数组中第一次出现改元素
       newArr.push(arr[i]);
     }
  }
  console.log(newArr); // ["2", "3", "5", "8", "7", "0"]

4、利用数组的 sort() 方法进行数组排序,然后再通过后面的值与前面的值进行比较,不同则放入新数组中

// 【方法四】 数组 sort() 方法
let arr = ["2", "3", "5", "2", "8", "7", "0", "3", "5"];
// 进行数组排序, 将第一个数组元素添加到新数组中
arr.sort();
let newArr = [arr[0]];
for (let i = 1; i < arr.length; i++) {
  if(arr[i]!==newArr[newArr.length-1]){
      // arr 数组中后一个元素与前一个元素不同
      newArr.push(arr[i])
  }
}
console.log(newArr);  // ["0", "2", "3", "5", "7", "8"]