摘要:三種方法利用判斷新數組中實際上也是使用的類似的傳入數組如果當前數組的第已經保存進了臨時數組,那么跳過,否則把當前項到臨時數組里面利用判斷舊數組結果數組如果當前數組的第項在當前數組中第一次出現的位置不是,那么表示第項是重復的,忽略掉。
三種方法 利用indexOf判斷新數組
underscore.js中實際上也是使用的類似的indexOf
//傳入數組 function unique1(arr){ var tmpArr = []; for(var i=0; i利用indexOf判斷舊數組 function unique2(arr){ var tmpArr = []; //結果數組 for(var i=0; i利用hash查找 這里利用了JS對象的實現就是hash表的特性
function unique3(arr){ var tmpArr = [], hash = {};//hash為hash表 for(var i=0;i數組擴展 Array.prototype.unique1 = function (){ var tmpArr = []; for (var i = 0; i < this.length; i++){ if (tmpArr.indexOf(this[i]) == -1){ tmpArr.push(this[i]); } } return tmpArr; } Array.prototype.unique2 = function(){ var tmpArr = []; //結果數組 for(var i = 0; i < this.length; i++){ if (this.indexOf(this[i]) == i){ tmpArr.push(this[i]); } } return tmpArr; } Array.prototype.unique3 = function(){ var tmpArr=[], hash = {}; for(var i = 0; i < this.length; i++){ if (!hash[this[i]]){ hash[this[i]] = true; tmpArr.push(this[i]); } } return tmpArr; }使用SetSet和Map是ES6中新增的數據結構
Set直接可以存儲不重復的一組key,這個key也可以是對象,字符串等
創建setvar s = new Set([1, 2, 3,]); s; // Set {1, 2, 3}新增元素>>> s.add(4) >>> s {1, 2, 3, 4} >>> s.add(4) >>> s {1, 2, 3, 4}//重復元素不會被添加刪除元素s; // Set {1, 2, 3, 4} s.delete(3); s; // Set {1, 2, 4}遍歷元素Map和Set無法使用下標
ES6標準引入了新的iterable類型,Array、Map和Set都屬于iterable類型
var s = new Set(["A", "B", "C"]); for (var x of s) { // 遍歷Set alert(x); }或者直接使用iterable內置的forEach方法
forEach方法是ES5.1標準引入的
var s = new Set(["A", "B", "C"]); s.forEach(function (element, set) { alert(element); });參考文章最全前端面試問題
廖雪峰-Map和Set
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85852.html
摘要:方法新特性方法利用對象名唯一方法利用數組包含方法排序比較兄弟元素方法雙循環比較 方法1:ES6新特性Set Array.prototype.rmSome = function() { return Array.from(new Set(this)); } 方法2:利用對象名唯一 Array.prototype.rmSome = function() { let te...
摘要:數組去重是校招面試的必考知識點。以下就是筆者所實現的數組去重的幾種簡單的方式。結合實現這種方法的關鍵點就是判斷是否相同的時候不要忽略對元素類型的判斷。以上就是筆者所想到的幾個數組去重的方式大家如果有更好的方法歡迎留言。 數組去重,是校招面試的必考知識點。簡單的說,數組去重就是將一個數組中的相同的元素刪除,只保留其中的一個。這里的相同其實是一個陷阱,有好多同學只認為值相等即為相同,而忽略...
摘要:去重的幾種方案雙層循環排序后比較相鄰元素是否相等壓入數組有限制,但效率高高性能數組去重 JS去重的幾種方案 new Set() 雙層for循環 + splice Array.fliter + indexof Arroy.sort + 排序后比較相鄰元素是否相等壓入數組 for ... of + includes for ... of + object 有限制,但效率高 JS高性能數組...
閱讀 2545·2023-04-26 01:44
閱讀 2558·2021-09-10 10:50
閱讀 1411·2019-08-30 15:56
閱讀 2250·2019-08-30 15:44
閱讀 512·2019-08-29 11:14
閱讀 3417·2019-08-26 11:56
閱讀 3018·2019-08-26 11:52
閱讀 909·2019-08-26 10:27