成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS數(shù)組去重的三種方法

hikui / 2287人閱讀

摘要:編寫雙重循環(huán)去重當(dāng)出現(xiàn)相同的元素時(shí),刪除重復(fù)的元素哈希表形式查詢對(duì)象是否存在當(dāng)前元素屬性借助方法查詢空數(shù)組里面是否已經(jīng)存在這個(gè)值,不存在則推入編寫單元測(cè)試輸出通過來實(shí)現(xiàn)是比較優(yōu)雅的姿勢(shì)。

編寫uniqueArray.js

var Unique = {
    /**
     * 雙重循環(huán)去重
     * @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);//當(dāng)出現(xiàn)相同的元素時(shí),刪除重復(fù)的元素
                }
            }
        }

        return arr;
    },

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

        //查詢hash對(duì)象是否存在當(dāng)前元素(屬性)
        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 = [];

        //查詢空數(shù)組里面是否已經(jīng)存在這個(gè)值,不存在則推入
        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;

編寫單元測(cè)試

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來實(shí)現(xiàn)是比較優(yōu)雅的姿勢(shì)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79082.html

相關(guān)文章

  • [Javascript]數(shù)組去重三種實(shí)現(xiàn)方式

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

    TZLLOG 評(píng)論0 收藏0
  • 思維導(dǎo)圖整理大廠面試高頻數(shù)組補(bǔ)充1: 最接近的三數(shù)之和 和 三數(shù)之和 的兩個(gè)不同之處, 力扣16

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

    longmon 評(píng)論0 收藏0
  • js數(shù)組重的幾種方法

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

    mykurisu 評(píng)論0 收藏0
  • 數(shù)組重的方法

    摘要:因?yàn)槭褂脝为?dú)的接口存取數(shù)據(jù)所以不用擔(dān)心與內(nèi)置屬性重名修改上面的方法后得到除了以外還有這種數(shù)據(jù)類型這是一個(gè)集合它不允許重復(fù)元素出現(xiàn)。 NaN NaN屬于number,也是一種基本數(shù)據(jù)類型,只要有一邊是 NaN,那么結(jié)果就是false 原始值和包裝對(duì)象 包裝對(duì)象即基本數(shù)據(jù)類型經(jīng)過包裝之后得到的對(duì)象,作為基本類型值的字符串擁有trim等方法,及l(fā)ength屬性,正是由于JS代碼會(huì)對(duì)原始值做一...

    sevi_stuo 評(píng)論0 收藏0
  • 數(shù)組 去除重復(fù)項(xiàng)的方法 你知道幾種呢?

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

    tomato 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<