Javascript中数组去重的六种方法
生活随笔
收集整理的這篇文章主要介紹了
Javascript中数组去重的六种方法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
數(shù)組去重
- 第一種方法:
- 先對(duì)數(shù)組進(jìn)行排序sort(),排好序,然后把數(shù)組的當(dāng)前項(xiàng)和后一項(xiàng)進(jìn)行比較,相同則使用數(shù)組的splice(相同的位置,1),但是為了防止數(shù)組塌陷,每次刪除數(shù)組元素的時(shí)候要把i的值減一。
- 第二種方法是:建立一個(gè)新數(shù)組,要是原數(shù)組里面的數(shù)是頭一次出現(xiàn)(使用數(shù)組的indexOf()),那么就把這個(gè)數(shù)放到新數(shù)組里面,否者就拋棄這個(gè)數(shù),類似于前面說的隨機(jī)驗(yàn)證碼
- 第三種方法:直接拿當(dāng)前項(xiàng)與后一項(xiàng)進(jìn)行比較,相同的要?jiǎng)h除,使用數(shù)組splice()進(jìn)行刪除,這里也要防止數(shù)組塌陷;
- 第四種方法:利用對(duì)象不重名的特性,對(duì)象的存儲(chǔ)是鍵值對(duì)方式,要獲取屬性值,要通過對(duì)象./[]屬性來獲取;相同則刪除,也要防止數(shù)組塌陷
- 第五種方法:也是利用對(duì)象不重名的方法,但是這次是直接計(jì)算其數(shù)組各個(gè)數(shù)的重復(fù)次數(shù),
- 第六種方法:使用ES6中的Set數(shù)據(jù)結(jié)構(gòu)中重復(fù)項(xiàng)不生效的特性
但是對(duì)于數(shù)據(jù)的數(shù)據(jù)類型是不會(huì)進(jìn)行轉(zhuǎn)換的,所以一定要注意元素的數(shù)據(jù)類型是否是一致
數(shù)組去重的面試題:
找出這次考試中,最高分,及最高分出現(xiàn)的次數(shù)
//思路:全部人的成績(jī)是一個(gè)數(shù)組,這就相當(dāng)于使用數(shù)組去重的方法,找到最高的分?jǐn)?shù),和其次數(shù),首先找到了去重的數(shù)組進(jìn)行從小到大的排序,得到次數(shù),然后通過最高分所對(duì)應(yīng)的索引值得到出現(xiàn)的最高分var ary = [1, 23, 4, 2, 33, 1, 2, 44, 3, 2, 3];var obj = {};for(var i = 0; i < ary.length; i++) {//把數(shù)組的值,當(dāng)作對(duì)象的索引賦值給對(duì)象,所以通過對(duì)象索引獲取的是數(shù)組出現(xiàn)的次數(shù)var cur = ary[i];if(obj[cur]) {//每次重復(fù)一次,其對(duì)應(yīng)的值加一obj[cur]++;} else {//說明沒有重復(fù),個(gè)數(shù)只有一個(gè)obj[cur] = 1;}}//分?jǐn)?shù)從低到高出現(xiàn)的次數(shù)console.log(obj);var ary2 = [];//對(duì)于對(duì)象使用in 方法進(jìn)行遍歷,遍歷獲取的是屬性值for(var attr in obj) {ary2.push(Number(attr));}console.log(ary2);//最高分console.log(ary2[ary2.length-1]);var count=ary2[ary2.length-1];//最高分出現(xiàn)的次數(shù)console.log(obj[count]);總結(jié)
以上是生活随笔為你收集整理的Javascript中数组去重的六种方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装SQL Server 2005时,出
- 下一篇: Java并发编程 - Executor,