昨天看見(jiàn) Lazy 兄弟重新更新了函數(shù),現(xiàn)在他是這樣子寫的:

Array.prototype.uniq = function( " /> 久久亚洲精品成人,国产高清视频a在线大全,内射爽无广熟女亚洲

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Javascript 更新 JavaScript 數(shù)組的 uniq 方法

上次寫的一篇《JavaScript 數(shù)組的 uniq 方法》,發(fā)現(xiàn)代碼的問(wèn)題還是存在。比如如果數(shù)組內(nèi)有 undefined 元素就無(wú)法過(guò)濾等。

昨天看見(jiàn) Lazy 兄弟重新更新了函數(shù),現(xiàn)在他是這樣子寫的:

Array.prototype.uniq = function() {
    var resultArr = [],
        returnArr = [],
        origLen = this.length,
        resultLen;

    function include(arr, value) {
        for (var i = 0, n = arr.length; i < n; ++i){
            if (arr[i] === value) {
                return true;
            }
        }

        return false;
    }

    resultArr.push(this[0]);
    for (var i = 1; i < origLen; ++i) {
        if (include(resultArr, this[i])) {
            returnArr.push(this[i]);
        } else {
            resultArr.push(this[i]);
        }
    }

    resultLen = resultArr.length;
    this.length = resultLen;
    for (var i = 0; i < resultLen; ++i){
        this[i] = resultArr[i];
    }

    return returnArr;
}按照他的說(shuō)法:“這種解法在整個(gè)過(guò)程對(duì)原有數(shù)組的改變只有兩次,效率比其他兩種高了2個(gè)數(shù)量級(jí)左右!”,我實(shí)測(cè)了下此函數(shù)的效率,的確如此(測(cè)試連接點(diǎn)這里)。

我也重新編寫和更新了我的函數(shù),現(xiàn)在看起來(lái)是這個(gè)樣子的:

Array.prototype.uniq = function() {
    var tmp    = new Array;
    var length = this.length;

    for(var i = 0; i < length; i++) {
        var push = true;
        for(var j = i + 1; j < length; j++) {
            if(this[j] === this[i]) {
                push = false;
                break;
            }
        }

        if(push) {
            tmp.push(this[i])
        }
    }

    this.length = tmp.length;
    for (var i = 0; i < tmp.length; i++) {
        this[i] = tmp[i];
    }

    return tmp;
}由同一個(gè)頁(yè)面測(cè)試所得,效率還是 Lazy 兄弟的稍許快些。經(jīng)過(guò)一點(diǎn)思考以后,我有了些一點(diǎn)點(diǎn)我的心得:

我的函數(shù) for 嵌套可以用一個(gè)函數(shù)獨(dú)立(就如 Lazy 兄弟的 include 函數(shù)一樣)。在上述的情況下,調(diào)用函數(shù)會(huì)比循環(huán)判斷效率要高一些。 
數(shù)組的循環(huán)讀寫操作在數(shù)據(jù)量大的情況下應(yīng)格外的注意效率問(wèn)題 
Lazy 兄弟的結(jié)論:

對(duì)數(shù)組的改變開銷巨大,如果可能,盡量在不改變?cè)袛?shù)組的情況下進(jìn)行操作。
如最終需要改變數(shù)組自身,可將結(jié)果賦予原有數(shù)組來(lái)操作。另外,對(duì)于 length
的計(jì)算,似乎效率并未受其影響。Lazy 兄弟的 resultArr 數(shù)組按照他這樣的寫法就可以保存同樣的值,在這里贊一個(gè)(雖然我的函數(shù)經(jīng)過(guò)一點(diǎn)小的修改也可以實(shí)現(xiàn))。感興趣的朋友可以去 Lazy 的頁(yè)面去看看。

最后,推薦閱讀一下王元濤兄弟的 JavaScript 數(shù)組的 uniq 方法,萬(wàn)分感謝。

JavaScript技術(shù)Javascript 更新 JavaScript 數(shù)組的 uniq 方法,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产69精品久久久久人妻刘玥 | 国产盗摄TP摄像头偷窥 | 国产午夜三区视频在线 | 征服丝袜旗袍人妻 | 国产亚洲精品久久久无码狼牙套 | 妻子的妹妹在线 | 少妇内射视频播放舔大片 | 国产精品69人妻无码久久 | 色婷婷99综合久久久精品 | 亚洲免费高清视频 | 精品国产国产综合精品 | 亚洲精品123区在线观看 | 日本人HD18HD18 | 久久777国产线看观看精品卜 | 嫩草影院地址一二三 | 国产午夜精品不卡视频 | 女神被调教成了精盆 | 国自产拍 高清精品 | 小泽玛丽av无码观看 | 美国z0069| 日日操夜夜操天天操 | 天堂无码人妻精品AV一区 | 日本无码毛片久久久九色综合 | 漂亮的保姆5电影免费观看完整版中文 | qvod在线| 国产欧美另类久久久品 | 久久精视频 | 久久亚洲午夜牛牛影视 | av淘宝 在线观看 | 日本一本二本三区免费免费高清 | 偷拍自偷拍亚洲精品 | 最美白嫩的极品美女ASSPICS | 美女胸被男子强捏视频 | 亚洲国产精品特色大片观看 | 涩涩涩涩爱网站 | 久久国产乱子伦精品免费不卡 | 最新亚洲一区二区三区四区 | 色播播电影 | 男女AA片免费| 日本湿姝在线观看 | 日韩久久影院 |