数组去重

91 阅读1分钟

数组去重

方法一 使用set

let arr = [1, 1, 2, 2]
let uniq = Array.form(new Set(arr))
console.log(uniq) // [1, 2]

使用ES6新增的Set数据结构,它可以自动去重。将数组转换为Set对象,再将Set对象转换为数组即可。

方法二 使用for循环遍历数组

let arr = [1, 2, 2, 3, 3, 4, 5, 5]; 
let uniqueArr = []; 
for (let i = 0; i < arr.length; i++) { 
    if (uniqueArr.indexOf(arr[i]) === -1) { 
        uniqueArr.push(arr[i]); 
    } 
} 
console.log(uniqueArr); // [1, 2, 3, 4, 5]

使用for循环遍历原数组,然后将每个元素和它之前的元素进行比较,如果相同就去除该元素。

方法三 使用Map

let uniq = function(arr) {
    let map = new Map()
    for (let i = 0; i < arr.length; i++) {
        let number = arr[i]
        if (number === undefined) {continue}
        if (map.has(number)) {
            continue
        }
        map.set(number, true)
    }
    return [...map.keys()]
}

创建一个空Map,然后遍历原数组,将数组的元素当key,value设置为true,如果在Map中已经存在,则忽略该元素,继续遍历数组,最后返回Map的key组成的数组。