摘要:從嵌套循環(huán)就可以看出,這種方法效率極低。我們可以用一個的結構記錄已有的元素,這樣就可以避免內層循環(huán)。恰好,在中實現是極為簡單的,改進如下
數組去重
Array類型并沒有提供去重復的方法,如果要把數組的重復元素干掉,那得自己想辦法:
方法一:ES6方法:var arr=[2,3,5,4,5,2,2,"5"]; var s=new Set(); arr.map((item,index)=>{ s.add(item) }) var temp=[]; for(var i of s){ temp.push(i) } console.log(temp)
得到結果 [ 2, 3, 5, 4, "5" ]方法很簡單,不得不說es6是大勢所趨啊,也希望各大瀏覽器廠商趕緊支持起來!
方法二:利用indexOf方法;var aa=[1,3,5,4,3,3,1,4] function arr(arr) { var result=[] for(var i=0; i方法三: function unique(arr) { var result = [], isRepeated; for (var i = 0, len = arr.length; i < len; i++) { isRepeated = false; for (var j = 0, len = result.length; j < len; j++) { if (arr[i] == result[j]) { isRepeated = true; break; } } if (!isRepeated) { result.push(arr[i]); } } return result; }方法四:總體思路是把數組元素逐個搬運到另一個數組,搬運的過程中檢查這個元素是否有重復,如果有就直接丟掉。從嵌套循環(huán)就可以看出,這種方法效率極低。我們可以用一個hashtable的結構記錄已有的元素,這樣就可以避免內層循環(huán)。恰好,在Javascript中實現hashtable是極為簡單的,改進如下:
function unique(arr) { var result = [], hash = {}; for (var i = 0, elem; (elem = arr[i]) != null; i++) { if (!hash[elem]) { result.push(elem); hash[elem] = true; } } return result; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/109122.html
摘要:專題系列第三篇,講解各種數組去重方法,并且跟著寫一個前言數組去重方法老生常談,既然是常談,我也來談談。它類似于數組,但是成員的值都是唯一的,沒有重復的值。 JavaScript 專題系列第三篇,講解各種數組去重方法,并且跟著 underscore 寫一個 unique API 前言 數組去重方法老生常談,既然是常談,我也來談談。 雙層循環(huán) 也許我們首先想到的是使用 indexOf 來循...
摘要:數組去重,一般都是在面試的時候才會碰到,一般是要求手寫數組去重方法的代碼。如果是被提問到,數組去重的方法有哪些你能答出其中的種,面試官很有可能對你刮目相看。數組去重的方法一利用去重中最常用不考慮兼容性,這種去重的方法代碼最少。 數組去重,一般都是在面試的時候才會碰到,一般是要求手寫數組去重方法的代碼。如果是被提問到,數組去重的方法有哪些?你能答出其中的10種,面試官很有可能對你刮目相看...
摘要:而數組元素去重是基于運算符的。而如果有迭代函數,則計算傳入迭代函數后的值,對值去重,調用方法,而該方法的核心就是調用方法,和我們上面說的方法一異曲同工。 Why underscore (覺得這部分眼熟的可以直接跳到下一段了...) 最近開始看 underscore.js 源碼,并將 underscore.js 源碼解讀 放在了我的 2016 計劃中。 閱讀一些著名框架類庫的源碼,就好像...
摘要:數組去重雙層循環(huán)使用雙層嵌套循環(huán)是最原始的方法用來存儲結果如果是唯一的,那么執(zhí)行完循環(huán),等于外層循環(huán)內層循環(huán)當和相等時,跳出循環(huán)。否則說明元素唯一,這時成立,將此元素添加到中。它類似于數組,但是成員的值都是唯一的,沒有重復的值。 JavaScript數組去重 雙層循環(huán) 使用雙層嵌套循環(huán)是最原始的方法: var array = [a,b,a]; function unique(arra...
摘要:現在要求去重下面這個數組測試重復重復方法一測試重復重復去重后測試重復是新加的集合集合中的值不會重復。歡迎大家一起討論提出新的去重方法。有任何錯誤請在評論指出。 現在要求去重下面這個數組 [1, 2, 3, 3, 3, 0, 1, 2, 測試, 重復, 重復, NaN, NaN, false, false]; 方法一:ES6 Set() let arr = [1, 2, 3, 3, 3,...
閱讀 1674·2021-10-12 10:11
閱讀 3798·2021-09-03 10:35
閱讀 1469·2019-08-30 15:55
閱讀 2163·2019-08-30 15:54
閱讀 1018·2019-08-30 13:07
閱讀 1051·2019-08-30 11:09
閱讀 602·2019-08-29 13:21
閱讀 2674·2019-08-29 11:32