js 数组去重

112 阅读1分钟

我正在参加「掘金·启航计划」

js 数组去重

最简单的数组去重方法:

数组 indexOf() 方法可返回数组中某个指定的元素位置(下标)。如果在数组中没找到指定元素则返回 -1。

var arr = ["a","b","c","a","d","b","e","c"]

function removeRepeat(arr){
    let result = []   // 定义一个新的空数组
    arr.forEach(item=>{   // 遍历当前数组
        if(result.indexOf(item) == -1){   // 如果当前新数组不包含当前遍历数组项
            result.push(item)    // 在新数组中添加当前数组遍历项
        }
    })
    return result
}

let result = removeRepeat(arr)
console.log(result)  // ["a","b","c","d","e"]

数组下标判断法:

var arr = ["a","b","c","a","d","b","e","c"]

function removeRepeat(arr){
    let result = [arr[0]]   // 结果数组
    arr.forEach((item,index)=>{
        if(index >0 && arr.indexOf(item) == index){   // 从数组第二项开始遍历比较
            result.push(item)
        }
    })
    return result
}

let result = removeRepeat(arr)
console.log(result)   // ["a","b","c","d","e"]  

速度最快, 占空间最多(空间换时间):

var arr = ["a","b","c","a","d","b","e","c"]

function removeRepeat(arr){
    var obj = {} , result = [], type;
    arr.forEach(item =>{
        type = typeof item;
        if(!obj[item]){
            obj[item] = [type]
            result.push(item)
        }else if(obj[item].indexOf(type) < 0){
            obj[item].push(type)
            result.push(item)
        }
    })
    console.log(obj)
    return result
}

let result = removeRepeat(arr)   // ["a","b","c","d","e"]
console.log(result)

数组 includes() 方法判断一个数组是否包含一个指定的值,如果是返回 true,否则false。

var arr = ["a","b","c","a","d","b","e","c"]

function removeRepeat(arr){
    let result = []    // 定义一个新的空数组
    arr.forEach(item=>{    // 遍历当前数组
        if(!result.includes(item)){     // 如果当前新数组不包含当前遍历数组项
            result.push(item)    // 在新数组中添加当前数组遍历项
        }
    })
    return result
}

let result = removeRepeat(arr)     // ["a","b","c","d","e"]
console.log(result)

es6 set() 方法 + …扩展运算符 数组去重:

var arr = ["a","b","c","a","d","b","e","c"]

function removeRepeat(arr) {
    return [...new Set(arr)] 
}

let result = removeRepeat(arr)
console.log(result)    // ["a","b","c","d","e"]

es6 set() 方法 + Array.from() 数组去重:

var arr = ["a","b","c","a","d","b","e","c"]

function removeRepeat(arr) {
    return Array.from(new Set(arr))  // Array.from()能把set结构转换为数组
}

let result = removeRepeat(arr)
console.log(result)    // ["a","b","c","d","e"]