摘要:編寫雙重循環去重當出現相同的元素時,刪除重復的元素哈希表形式查詢對象是否存在當前元素屬性借助方法查詢空數組里面是否已經存在這個值,不存在則推入編寫單元測試輸出通過來實現是比較優雅的姿勢。
編寫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
摘要:方式使用獲取并刪除刪除數組的第一個元素,判斷這個元素是否還存在于數組中,如果存在則說明這個元素的是重復的如果不存在,進行操作方式建立一個哈希表,通過對象屬性查詢去除重復元素方式思路和方式類似,但是簡潔很多來源個人博客 方式1:使用shift()獲取并刪除刪除數組的第一個元素,判斷這個元素是否還存在于數組中,如果存在則說明這個元素的是重復的;如果不存在,進行push()操作 functi...
摘要:此專欄文章是對力扣上算法題目各種方法的總結和歸納整理出最重要的思路和知識重點并以思維導圖形式呈現當然也會加上我對導圖的詳解目的是為了更方便快捷的記憶和回憶算法重點不用每次都重復看題解畢竟算法不是做了一遍就能完全記住的所 ...
摘要:三種方法利用判斷新數組中實際上也是使用的類似的傳入數組如果當前數組的第已經保存進了臨時數組,那么跳過,否則把當前項到臨時數組里面利用判斷舊數組結果數組如果當前數組的第項在當前數組中第一次出現的位置不是,那么表示第項是重復的,忽略掉。 三種方法 利用indexOf判斷新數組 underscore.js中實際上也是使用的類似的indexOf //傳入數組 functio...
摘要:數組去重的方法第一種方法方法可以將結構轉為數組這就是提供了一種數據去重的方法第二種方法運用擴展運算符提供了一種更便捷的去重方法第三種方法這是一種原生的去重方法,借助一個空數組來實現去重,便于理解底層原理函數帶有參數第四種方法同上函數不帶參 數組去重的方法 第一種方法 Array.from方法可以將Set結構轉為數組 let items = new Set([1, 2, 3, 4, 5]...
閱讀 2666·2021-11-23 09:51
閱讀 1651·2021-11-22 13:54
閱讀 2790·2021-11-18 10:02
閱讀 948·2021-08-16 10:57
閱讀 3563·2021-08-03 14:03
閱讀 1880·2019-08-30 15:54
閱讀 3535·2019-08-23 14:39
閱讀 607·2019-08-23 14:26