論數(shù)組去重的七種方式,拋磚引玉

目前只想到四種類型的思路
第一種是用es6的Set方法或者filter方法
第二種是拿出當前項和后面的內(nèi)容比較 includes indexOf都行 這里注意點就是用i--的話可以避免數(shù)組塌陷 i > 0 因為最后一個已經(jīng)沒有比較價值了
第三種那一個對象把屬性存起來,然后判斷當前項是否存在對象中
第四種是鄰項對比,先排序,然后加標識符最后使用正則\1和replace來篩選

Set方法去重

let arr = [1,3,6,23,6,6,22,18,8,3,1,1]
function filterArr(arr) {
    return [...new Set(arr)]
}
console.log(filterArr)

filter方法去重

let arr = [1,3,6,23,6,6,22,18,8,3,1,1]
function filterArr(arr) {
    return arr.filter(function (x, index, self) {
        return self.indexOf(x) === index;
    });
}
console.log(filterArr)

includes方法去重

let arr = [1,3,6,23,6,6,22,18,8,3,1,1]
function filterArr(arr) {
    for(let i = arr.length; i > 0; i--) {
        let newArr = arr.slice(0, i - 1)
        if(newArr.includes(arr[i])) {
            arr.splice(i, 1)
        }
    }
    return arr
}
console.log(filterArr)

indexOf方法去重

let arr = [1,3,6,23,6,6,22,18,8,3,1,1]
function filterArr(arr) {
    for(let i = arr.length; i > 0; i--) {
        let newArr = arr.slice(0, i - 1)
        if(newArr.join().indexOf(arr[i]) > -1) {
            arr.splice(i, 1)
        }
    }
    return arr
}
console.log(filterArr)

創(chuàng)建對象屬性來存值

let arr = [1,3,6,23,6,6,22,18,8,3,1,1]
function filterArr(arr) {
    let json = {}
    for(let i = arr.length; i >= 0; i--) {
        if(json[arr[i]]) {
            arr.splice(i, 1)
        }else {
            json[arr[i]] = arr[i]
        }
    }
    return arr
}
console.log(filterArr)

創(chuàng)建對象屬性來存值

let arr = [1,3,6,23,6,6,22,18,8,3,1,1]
function filterArr(arr) {
    arr = arr.sort((a, b)=> {return a - b})
    let reg = /(\d+,)\1*/g
    let newArr = []
    arr = arr.join() + ","
    arr.replace(reg, function(value, $1){
        newArr.push(parseFloat($1))
    })
    return newArr
}
console.log(filterArr)

目前想到的就這兒多了,歡迎各位科普

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容