昨天看見 Lazy 兄弟重新更新了函數,現在他是這樣子寫的:

Array.prototype.uniq = function( " /> 99re热精品视频国产免费,我的美女奴隶,国产成人a视频在线观看

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

Javascript 更新 JavaScript 數組的 uniq 方法

上次寫的一篇《JavaScript 數組的 uniq 方法》,發現代碼的問題還是存在。比如如果數組內有 undefined 元素就無法過濾等。

昨天看見 Lazy 兄弟重新更新了函數,現在他是這樣子寫的:

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;
}按照他的說法:“這種解法在整個過程對原有數組的改變只有兩次,效率比其他兩種高了2個數量級左右!”,我實測了下此函數的效率,的確如此(測試連接點這里)。

我也重新編寫和更新了我的函數,現在看起來是這個樣子的:

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;
}由同一個頁面測試所得,效率還是 Lazy 兄弟的稍許快些。經過一點思考以后,我有了些一點點我的心得:

我的函數 for 嵌套可以用一個函數獨立(就如 Lazy 兄弟的 include 函數一樣)。在上述的情況下,調用函數會比循環判斷效率要高一些。 
數組的循環讀寫操作在數據量大的情況下應格外的注意效率問題 
Lazy 兄弟的結論:

對數組的改變開銷巨大,如果可能,盡量在不改變原有數組的情況下進行操作。
如最終需要改變數組自身,可將結果賦予原有數組來操作。另外,對于 length
的計算,似乎效率并未受其影響。Lazy 兄弟的 resultArr 數組按照他這樣的寫法就可以保存同樣的值,在這里贊一個(雖然我的函數經過一點小的修改也可以實現)。感興趣的朋友可以去 Lazy 的頁面去看看。

最后,推薦閱讀一下王元濤兄弟的 JavaScript 數組的 uniq 方法,萬分感謝。

JavaScript技術Javascript 更新 JavaScript 數組的 uniq 方法,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 香蕉久久夜色精品国产小优 | 精品亚洲视频在线观看 | 激情A片久久久久久久 | 亚洲视频不卡 | 18 japanese宾馆直播 | 亚洲色图p| 中文字幕亚洲无线码在线 | 国产高清视频a在线大全 | 在线免费观看国产视频 | 亚洲AV久久无码精品九号 | 亚洲欧美激情精品一区二区 | 中文字幕A片视频一区二区 中文字幕AV在线一二三区 | 色AV色婷婷96人妻久久久 | 国产成人免费高清激情视频 | 亚洲精品久久久久久久蜜臀老牛 | 国产成人综合网在线观看 | 99热久久视频只有精品6国产 | 狠狠色狠狠色综合日日92 | 男女又黄又刺激B片免费网站 | 亚洲欧美日韩高清中文在线 | 国产精品永久免费视频 | 闺蜜撬开我的腿用黄瓜折磨我 | YELLOW视频直播在线观看 | 亚洲蜜芽在线观看精品一区 | 开心色99xxxx开心色 | 亚洲国产三级在线观看 | 草草久久久无码国产专区全集观看 | 三级叫床震大尺度视频 | 精品国产三级a | 免费国产黄线在线播放 | 被老总按在办公桌吸奶头 | 欧美日韩国产码在线 | 给我免费播放片bd国语 | 国产三级在线精品男人的天堂 | 2021乱码精品公司 | 亚久久伊人精品青青草原2020 | 欧美国产精品久久久乱码 | 国产揄拍国产精品 | 国产视频www | 丰满的女友1在线观看 | 亚洲AV久久久噜噜噜噜 |