数组去重常用的一些办法和实现思路

1. ES6中Set数据结构数组进行去重

思路:利用es6新的数据结构Set的特性,和扩展运算符

[...new Set(array)]

2.利用数组的IndexOf方法或者includes方法

思路:indexOf为-1的时候,表示没有找到该值,再push进数组中

function unique4(arr) {
  var newArr = []
  for (var i = 0; i < arr.length; i++) {
    if (newArr.indexOf(arr[i])===-1) {
      newArr.push(arr[i])
    }
   }
  return newArr
        }
console.log(unique4([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]));
// 结果是[1, 2, 3, 5, 6, 7, 4]

3.双循环查找

思路:定义一个新的数组,并且存放原数组的第一个元素,然后一一比较新数组中的元素和旧数组中的元素算法相同

let arr = [1, 1, 1, 1, 9, 2, 2, 3, 4, 5, 5, 6, 6, 1, 2, 3, 9]

function sortArray(arr) {
    var newArr = [arr[0]]
    for (let i = 0; i < arr.length; i++) {
        var isDone = true
        for (let j = 0; j < newArr.length; j++) {
            if(arr[i]===newArr[j]) {
                isDone = false
                break;
            }
        }
        if(isDone) {
            newArr.push(arr[i])
        }
    }
    return newArr
}

console.log(sortArray(arr))
//[1, 9, 2, 3, 4, 5, 6]

4.对象属性唯一性

思路:利用对象属性存在的特性,如果没有该属性则存入新数组。

let arr = [1, 1, 1, 1, 9, 2, 2, 3, 4, 5, 5, 6, 6, 1, 2, 3, 9]

function unique3(arr) {
    var obj={}
    var newArr=[]
    for (let i = 0; i < arr.length; i++) {
        if (!obj[arr[i]]) {
            obj[arr[i]] = 1
            newArr.push(arr[i])
        }   
    }
    return newArr
}
console.log(unique3(arr));

你可能感兴趣的:(数组去重常用的一些办法和实现思路)