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

資訊專欄INFORMATION COLUMN

JS數組去重的三種方法

hikui / 2286人閱讀

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

編寫uniqueArray.js

var Unique = {
    /**
     * 雙重循環去重
     * @param arr
     * @returns {*}
     */
    dbloop: function (arr) {
        var i,
            j,
            res = [];
        for (i = 0; i < arr.length; i++) {
            for (j = i + 1; j < arr.length; j++) {
                if (arr[i] === arr[j]) {
                    arr.splice(j--, 1);//當出現相同的元素時,刪除重復的元素
                }
            }
        }

        return arr;
    },

    /**
     * 哈希表形式
     * @param arr
     * @returns {Array}
     */
    hash: function (arr) {
        var i,
            hash = {},
            res = [];

        //查詢hash對象是否存在當前元素(屬性)
        for (i = 0; i < arr.length; i++) {
            if (!hash[arr[i]]) {
                res.push(arr[i]);
                hash[arr[i]] = true;
            }
        }

        return res;
    },

    /**
     * 借助indexOf方法
     * @param arr
     * @returns {Array}
     */
    indexOf: function (arr) {
        var i,
            res = [];

        //查詢空數組里面是否已經存在這個值,不存在則推入
        for (i = 0; i < arr.length; i++) {
            if (res.indexOf(arr[i]) === -1) {
                res.push(arr[i]);
                console.log(arr[i]);
            }
        }

        return res;
    }
};

module.exports = Unique;

編寫單元測試

var expect = require("chai").expect,
    unique = require("../uniqueArray");

describe("Test unique array function", function () {
    var arr = [1, 1, 2, 4, 3, 4, 4, 5, 1];
    var res = [1, 2, 4, 3, 5];

    it("# hash table test", function () {
        expect(unique.hash(arr)).to.be.deep.equal(res);
    });
    it("# indexof test", function () {
        expect(unique.hash(arr)).to.be.deep.equal(res);
    });
    it("# double loop test", function () {
        expect(unique.dbloop(arr)).to.be.deep.equal([2, 3, 4, 5, 1]);
    });
});

輸出:

Test unique array function
    ? # hash table test
    ? # indexof test
    ? # double loop test


  3 passing (24ms)

通過hash來實現是比較優雅的姿勢。

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

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

相關文章

  • [Javascript]數組去重三種實現方式

    摘要:方式使用獲取并刪除刪除數組的第一個元素,判斷這個元素是否還存在于數組中,如果存在則說明這個元素的是重復的如果不存在,進行操作方式建立一個哈希表,通過對象屬性查詢去除重復元素方式思路和方式類似,但是簡潔很多來源個人博客 方式1:使用shift()獲取并刪除刪除數組的第一個元素,判斷這個元素是否還存在于數組中,如果存在則說明這個元素的是重復的;如果不存在,進行push()操作 functi...

    TZLLOG 評論0 收藏0
  • 思維導圖整理大廠面試高頻數組補充1: 最接近的三數之和 和 三數之和 的兩個不同之處, 力扣16

    摘要:此專欄文章是對力扣上算法題目各種方法的總結和歸納整理出最重要的思路和知識重點并以思維導圖形式呈現當然也會加上我對導圖的詳解目的是為了更方便快捷的記憶和回憶算法重點不用每次都重復看題解畢竟算法不是做了一遍就能完全記住的所 ...

    longmon 評論0 收藏0
  • js數組重的幾種方法

    摘要:三種方法利用判斷新數組中實際上也是使用的類似的傳入數組如果當前數組的第已經保存進了臨時數組,那么跳過,否則把當前項到臨時數組里面利用判斷舊數組結果數組如果當前數組的第項在當前數組中第一次出現的位置不是,那么表示第項是重復的,忽略掉。 三種方法 利用indexOf判斷新數組 underscore.js中實際上也是使用的類似的indexOf //傳入數組 functio...

    mykurisu 評論0 收藏0
  • 數組重的方法

    摘要:因為使用單獨的接口存取數據所以不用擔心與內置屬性重名修改上面的方法后得到除了以外還有這種數據類型這是一個集合它不允許重復元素出現。 NaN NaN屬于number,也是一種基本數據類型,只要有一邊是 NaN,那么結果就是false 原始值和包裝對象 包裝對象即基本數據類型經過包裝之后得到的對象,作為基本類型值的字符串擁有trim等方法,及length屬性,正是由于JS代碼會對原始值做一...

    sevi_stuo 評論0 收藏0
  • 數組 去除重復項的方法 你知道幾種呢?

    摘要:數組去重的方法第一種方法方法可以將結構轉為數組這就是提供了一種數據去重的方法第二種方法運用擴展運算符提供了一種更便捷的去重方法第三種方法這是一種原生的去重方法,借助一個空數組來實現去重,便于理解底層原理函數帶有參數第四種方法同上函數不帶參 數組去重的方法 第一種方法 Array.from方法可以將Set結構轉為數組 let items = new Set([1, 2, 3, 4, 5]...

    tomato 評論0 收藏0

發表評論

0條評論

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