美文网首页
论数组去重的七种方式,抛砖引玉

论数组去重的七种方式,抛砖引玉

作者: 夜雨渐停丶我独行 | 来源:发表于2020-09-08 16:02 被阅读0次

    目前只想到四种类型的思路
    第一种是用es6的Set方法或者filter方法
    第二种是拿出当前项和后面的内容比较 includes indexOf都行 这里注意点就是用i--的话可以避免数组塌陷 i > 0 因为最后一个已经没有比较价值了
    第三种那一个对象把属性存起来,然后判断当前项是否存在对象中
    第四种是邻项对比,先排序,然后加标识符最后使用正则\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)
    

    创建对象属性来存值

    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)
    

    创建对象属性来存值

    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)
    

    目前想到的就这儿多了,欢迎各位科普

    相关文章

      网友评论

          本文标题:论数组去重的七种方式,抛砖引玉

          本文链接:https://www.haomeiwen.com/subject/uyfjektx.html