国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js 數組去重(單元素和對象數組)

reclay / 3335人閱讀

摘要:源碼方案,舊方案方案,相比方案一,少了一層循環,提高效率,邏輯更加清晰使用方法

源碼
//方案1,舊方案
Array.prototype.unique = function(key) {
    var arr = this;
    var n = [arr[0]];
    for (var i = 1; i < arr.length; i++) {
        if (key === undefined) {
            if (n.indexOf(arr[i]) == -1) n.push(arr[i]);
        } else {
            inner: {
                var has = false;
                for (var j = 0; j < n.length; j++) {
                    if (arr[i][key]!==undefined && arr[i][key] === n[j][key]) {
                        has = true;
                        break inner;
                    }
                }
            }
            if (!has) {
                n.push(arr[i]);
            }
        }
    }
    return n;
}

//方案2,相比方案一,少了一層循環,提高效率,邏輯更加清晰
Array.prototype.uniqueTree = function(key) {
        var res = [];
        var json = {};
        var arr = this;
        for (var i = 0; i < arr.length; i++) {
            if (arr[i][key]===undefined||json[arr[i][key]]===undefined) {
                res.push(arr[i]);
                json[arr[i][key]] = 1;
            }
        }
        return res;
    };
    
使用方法:
[1,2,3,4,3,2].unique()
//[1,2,3,4]
[{a:1},{a:2},{a:1}].unique("a")
//[{a:1},{a:2}]

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80548.html

相關文章

  • JS數組去重的三種方法

    摘要:編寫雙重循環去重當出現相同的元素時,刪除重復的元素哈希表形式查詢對象是否存在當前元素屬性借助方法查詢空數組里面是否已經存在這個值,不存在則推入編寫單元測試輸出通過來實現是比較優雅的姿勢。 編寫uniqueArray.js var Unique = { /** * 雙重循環去重 * @param arr * @returns {*} */ ...

    hikui 評論0 收藏0
  • 學習筆記: JS數組

    摘要:數組元素甚至可以是對象或其它數組。它執行的是淺拷貝,這意味著如果數組元素是對象,兩個數組都指向相同的對象,對新數組中的對象修改,會在舊的數組的相同對象中反應出來。 JS中的數組是弱類型的,數組中可以含有不同類型的元素。數組元素甚至可以是對象或其它數組。JS引擎一般會優化數組,按索引訪問數組常常比訪問一般對象屬性明顯迅速。數組長度范圍 from 0 to 4,294,967,295(2^...

    archieyang 評論0 收藏0
  • 面試小結(二)

    摘要:的用法,申明構造函數,返回。構造函數可以調用來獲取下一個值,可以構造類似于隨機數生成器。在構造器函數中,可以暫停然后返回當前表達式的值。總結是為了更好的消滅這些不知道,希望對大家也有所幫助。 1、function*的用法; function*,申明構造函數,返回{value:v,done:true_or_false}。構造函數可以調用next來獲取下一個值,可以構造類似于隨機數生成器。...

    lanffy 評論0 收藏0
  • 面試小結(二)

    摘要:的用法,申明構造函數,返回。構造函數可以調用來獲取下一個值,可以構造類似于隨機數生成器。在構造器函數中,可以暫停然后返回當前表達式的值。總結是為了更好的消滅這些不知道,希望對大家也有所幫助。 1、function*的用法; function*,申明構造函數,返回{value:v,done:true_or_false}。構造函數可以調用next來獲取下一個值,可以構造類似于隨機數生成器。...

    draveness 評論0 收藏0
  • 面試小結(二)

    摘要:的用法,申明構造函數,返回。構造函數可以調用來獲取下一個值,可以構造類似于隨機數生成器。在構造器函數中,可以暫停然后返回當前表達式的值。總結是為了更好的消滅這些不知道,希望對大家也有所幫助。 1、function*的用法; function*,申明構造函數,返回{value:v,done:true_or_false}。構造函數可以調用next來獲取下一個值,可以構造類似于隨機數生成器。...

    macg0406 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<