摘要:目前有以下幾種方法可以實現數組中元素去重遍歷數組一個一個進行比較利用實現,在擴展運算符提供了新的數據結構。它類似于數組,但是成員的值都是唯一的,沒有重復的值。
目前有以下幾種方法可以實現數組arr中元素去重
let arr = [1, 2, 3, 4, 2, 3, 4]
遍歷數組一個一個進行比較
let arr = [1, 2, 3, 4, 2, 3, 4]; let newarr = []; for(let i of arr){ if(newarr&&newarr.length == 0){ newarr.push(i); } let index = newarr.findIndex((value, index, arr)=>{ return i===value }); if(index < 0){ newarr.push(i); } } console.log( newarr);//?[1, 2, 3, 4]
利用obj實現,在http://www.cnblogs.com/mmzuo-...
var array = [1, "1", 1, 2, 3, 2, 4]; var tmpObj = {}; var result = []; array.forEach(function(a) { var key = (typeof a) + a; if (!tmpObj[key]) { tmpObj[key] = true; result.push(a); } }); console.log(result);
擴展運算符(...) + set
ES6 提供了新的數據結構 Set。它類似于數組,但是成員的值都是唯一的,沒有重復的值。Set 本身是一個構造函數,用來生成 Set 數據結構。向 Set 加入值的時候,不會發生類型轉換,所以5和"5"是兩個不同的值。Set 內部判斷兩個值是否不同,使用的算法叫做“Same-value-zero equality”,它類似于精確相等運算符(===),主要的區別是NaN等于自身,而精確相等運算符認為NaN不等于自身。
let newArr = [...new Set(arr)] console.log(newArr);//[1, 2, 3, 4]
Array.from() + set
Array.from方法用于將兩類對象轉為真正的數組:類似數組的對象(array-like object)和可遍歷(iterable)的對象(包括 ES6 新增的數據結構 Set 和 Map)
let newArr = Array.from(new Set(arr)) console.log(newArr);//[1, 2, 3, 4]
還有很多中未寫在上面,大家可以去
https://github.com/fung-yu/js...
上查看
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/97710.html
摘要:而數組元素去重是基于運算符的。而如果有迭代函數,則計算傳入迭代函數后的值,對值去重,調用方法,而該方法的核心就是調用方法,和我們上面說的方法一異曲同工。 Why underscore (覺得這部分眼熟的可以直接跳到下一段了...) 最近開始看 underscore.js 源碼,并將 underscore.js 源碼解讀 放在了我的 2016 計劃中。 閱讀一些著名框架類庫的源碼,就好像...
摘要:種常用數組去重第一種兩個循環思路新建一個為空的結果數組外層遍歷原數組,內層循環遍歷返回數組判斷內層循環數組當前元素和外層數組元素的值是否相等,是退出內層循環經過第二部后,此時內層循環數組的索引值和返回數組的長度正好相等,外層數組元素也是唯一 8 種常用數組去重 第一種 【兩個 for 循環】 思路: 新建一個為空的結果數組 外層 for 遍歷原數組,內層循環遍歷返回數組 判斷內層循環...
摘要:數組去重雙層循環使用雙層嵌套循環是最原始的方法用來存儲結果如果是唯一的,那么執行完循環,等于外層循環內層循環當和相等時,跳出循環。否則說明元素唯一,這時成立,將此元素添加到中。它類似于數組,但是成員的值都是唯一的,沒有重復的值。 JavaScript數組去重 雙層循環 使用雙層嵌套循環是最原始的方法: var array = [a,b,a]; function unique(arra...
閱讀 769·2021-11-23 09:51
閱讀 835·2021-11-23 09:51
閱讀 2503·2021-11-15 18:01
閱讀 3864·2021-10-11 11:07
閱讀 2397·2021-09-22 15:30
閱讀 1075·2021-09-22 14:59
閱讀 1557·2019-08-30 15:55
閱讀 1753·2019-08-30 15:52