亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

數組去重

標簽:
JavaScript
请看下面数组,其中的元素有多次重复,请写一个函数来实现去除数组中重复的元素。
<script>
    let arr = [1, 1, 2, '2', 3, 4, 5, 6, 6, 7, 8, 9, 0, "a", "a", "b"];    Array.prototype.unique = function () {        let newArr = [],
            len = this.length,
            flag = true

        for (let i = len - 1; i >= 0; i--) {            for (let j = 0; j < newArr.length; j++) {                if (this[i] === newArr[j]) {
                    flag = false
                    break
                } else {
                    flag = true
                }
            }            if (flag) {
                newArr.push(this[i])
            }
        }        return newArr.reverse()
    }
使用with改进
    Array.prototype.unique1 = function () {        let newArr = [],
            flag = true,
            i = this.length,
            j = 0

        while (--i >= 0) {
            j = newArr.length            while (--j >= 0) {
                flag = this[i] !== newArr[j]                if (!flag) {                    break
                }
            }
            flag && newArr.push(this[i])
        }        return newArr.reverse()
    }
对象去除法
    Array.prototype.unique2 = function () {        let newArr = [],
            obj = {},
            len = this.length        for (let i = len - 1; i > 0; i--) {
            obj[this[i]] = ""
        }        for (let key in obj) {
            newArr.push(key)
        }        return newArr
    }    //优化对象去除法
    Array.prototype.unique3 = function () { //这种情况下无法判断数组中元素的类型,如果不能去除不同类型的重复则需要改进
        let newArr = [],
            obj = {},
            len = this.length        for (let i = len - 1; i > 0; i--) {            if (obj[this[i]] == undefined) {
                obj[this[i]] = ""
                newArr.push(this[i])
            }
        }        return newArr.reverse()
    }    //改进可判数据类型
    Array.prototype.unique4 = function () { //这种情况下无法判断数组中元素的类型,如果不能去除不同类型的重复则需要改进
        let newArr = [],
            obj = {},
            len = this.length        for (let i = len - 1; i > 0; i--) {            if (obj[this[i]] == undefined || obj[this[i]] !== this[i]) {
                obj[this[i]] = this[i]
                newArr.push(this[i])
            }
        }        return newArr.reverse()
    }    Array.prototype.unique5 = function () {        let newArr = [],
            obj = {},
            i = this.length        while (--i) {
            (obj[this[i] == undefined] || obj[this[i]] !== this[i]) && (obj[this[i]] = this[i], newArr.push(this[i]))
        }        return newArr.reverse()
    }
通过正则实现去重
    Array.prototype.unique6 = function () {
        let newArr = [],
            arr1 = []

        arr1 = arr.join(',').match(/([^\,]+)(?!.*\1)/ig)
        arr1.forEach(item => {
            /[a-zA-z]/.test(item) ? newArr.push(item) : newArr.push(parseInt(item))
        })        return newArr
    }

    console.log(arr.unique6())
</script>
通过数组indexOF方法实现去重
    Array.prototype.unique7 = function(){        var arr = []        for(var i=0; i<this.length; i++){            if(arr.indexOf(this[i]) === -1){
                arr.push(this[i])
            }
        }        return arr
    }    
    var a = [1,2,3,3,2,1,42,3]    
    var c = a.unique2()



作者:饥人谷_米弥轮
链接:https://www.jianshu.com/p/2d37d3bc2167


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消