摘要:目前有以下幾種方法可以實現(xiàn)數(shù)組中元素去重遍歷數(shù)組一個一個進行比較利用實現(xiàn),在擴展運算符提供了新的數(shù)據(jù)結(jié)構(gòu)。它類似于數(shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。
目前有以下幾種方法可以實現(xiàn)數(shù)組arr中元素去重
let arr = [1, 2, 3, 4, 2, 3, 4]
遍歷數(shù)組一個一個進行比較
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實現(xiàn),在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 提供了新的數(shù)據(jù)結(jié)構(gòu) Set。它類似于數(shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。Set 本身是一個構(gòu)造函數(shù),用來生成 Set 數(shù)據(jù)結(jié)構(gòu)。向 Set 加入值的時候,不會發(fā)生類型轉(zhuǎn)換,所以5和"5"是兩個不同的值。Set 內(nèi)部判斷兩個值是否不同,使用的算法叫做“Same-value-zero equality”,它類似于精確相等運算符(===),主要的區(qū)別是NaN等于自身,而精確相等運算符認(rèn)為NaN不等于自身。
let newArr = [...new Set(arr)] console.log(newArr);//[1, 2, 3, 4]
Array.from() + set
Array.from方法用于將兩類對象轉(zhuǎn)為真正的數(shù)組:類似數(shù)組的對象(array-like object)和可遍歷(iterable)的對象(包括 ES6 新增的數(shù)據(jù)結(jié)構(gòu) Set 和 Map)
let newArr = Array.from(new Set(arr)) console.log(newArr);//[1, 2, 3, 4]
還有很多中未寫在上面,大家可以去
https://github.com/fung-yu/js...
上查看
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/97710.html
摘要:而數(shù)組元素去重是基于運算符的。而如果有迭代函數(shù),則計算傳入迭代函數(shù)后的值,對值去重,調(diào)用方法,而該方法的核心就是調(diào)用方法,和我們上面說的方法一異曲同工。 Why underscore (覺得這部分眼熟的可以直接跳到下一段了...) 最近開始看 underscore.js 源碼,并將 underscore.js 源碼解讀 放在了我的 2016 計劃中。 閱讀一些著名框架類庫的源碼,就好像...
摘要:種常用數(shù)組去重第一種兩個循環(huán)思路新建一個為空的結(jié)果數(shù)組外層遍歷原數(shù)組,內(nèi)層循環(huán)遍歷返回數(shù)組判斷內(nèi)層循環(huán)數(shù)組當(dāng)前元素和外層數(shù)組元素的值是否相等,是退出內(nèi)層循環(huán)經(jīng)過第二部后,此時內(nèi)層循環(huán)數(shù)組的索引值和返回數(shù)組的長度正好相等,外層數(shù)組元素也是唯一 8 種常用數(shù)組去重 第一種 【兩個 for 循環(huán)】 思路: 新建一個為空的結(jié)果數(shù)組 外層 for 遍歷原數(shù)組,內(nèi)層循環(huán)遍歷返回數(shù)組 判斷內(nèi)層循環(huán)...
摘要:數(shù)組去重,一般會在面試的時候才會碰到,要求手寫數(shù)組去重方法的代碼。在實際項目中碰到的數(shù)組去重,一般都是后臺去處理,很少讓前端處理數(shù)組去重。數(shù)組去重的方法一利用去重中最常用如果不考慮兼容性,這種去重的方法代碼最少。 數(shù)組去重,一般會在面試的時候才會碰到,要求手寫數(shù)組去重方法的代碼。如果是被提問到,數(shù)組去重的方法有哪些?你能答出其中的10種,面試官很有可能對你刮目相看。 在實際項目中碰到的...
摘要:將元素作為對象的鍵,默認(rèn)鍵對應(yīng)的值為如果對象中沒有這個鍵,則將這個元素放入結(jié)果數(shù)組中去。 前言 數(shù)組去重在日常開發(fā)中的使用頻率還是較高的,也是網(wǎng)上隨便一抓一大把的話題,所以,我寫這篇文章目的在于歸納和總結(jié),既然很多人都在提的數(shù)組去重,自己到底了解多少呢。又或者是如果自己在開發(fā)中遇到了去重的需求,自己能想到更好的解決方案嗎。 這次我們來理一理怎么做數(shù)組去重才能做得最合適,既要考慮兼容性,...
摘要:數(shù)組去重雙層循環(huán)使用雙層嵌套循環(huán)是最原始的方法用來存儲結(jié)果如果是唯一的,那么執(zhí)行完循環(huán),等于外層循環(huán)內(nèi)層循環(huán)當(dāng)和相等時,跳出循環(huán)。否則說明元素唯一,這時成立,將此元素添加到中。它類似于數(shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。 JavaScript數(shù)組去重 雙層循環(huán) 使用雙層嵌套循環(huán)是最原始的方法: var array = [a,b,a]; function unique(arra...
閱讀 783·2021-11-23 09:51
閱讀 848·2021-11-23 09:51
閱讀 2517·2021-11-15 18:01
閱讀 3876·2021-10-11 11:07
閱讀 2415·2021-09-22 15:30
閱讀 1085·2021-09-22 14:59
閱讀 1567·2019-08-30 15:55
閱讀 1763·2019-08-30 15:52