摘要:數(shù)組去重第一種方法先對(duì)數(shù)組進(jìn)行排序,排好序,然后把數(shù)組的當(dāng)前項(xiàng)和后一項(xiàng)進(jìn)行比較,相同則使用數(shù)組的相同的位置,,但是為了防止數(shù)組塌陷,每次刪除數(shù)組元素的時(shí)候要把的值減一。
數(shù)組去重
第一種方法:
先對(duì)數(shù)組進(jìn)行排序sort(),排好序,然后把數(shù)組的當(dāng)前項(xiàng)和后一項(xiàng)進(jìn)行比較,相同則使用數(shù)組的splice(相同的位置,1),但是為了防止數(shù)組塌陷,每次刪除數(shù)組元素的時(shí)候要把i的值減一。
var ary=[1,23,4,2,33,1,2,44,3,2,3] ary.sort(function(a,b){ return a-b; });//返回的是排好序的數(shù)組 for(var i=0;i第二種方法是:建立一個(gè)新數(shù)組,要是原數(shù)組里面的數(shù)是頭一次出現(xiàn)(使用數(shù)組的indexOf()),那么就把這個(gè)數(shù)放到新數(shù)組里面,否者就拋棄這個(gè)數(shù),類似于前面說的隨機(jī)驗(yàn)證碼
var ary=[1,23,4,2,33,1,2,44,3,2,3] var arr2=[]; for(var i=0;i第三種方法:直接拿當(dāng)前項(xiàng)與后一項(xiàng)進(jìn)行比較,相同的要?jiǎng)h除,使用數(shù)組splice()進(jìn)行刪除,這里也要防止數(shù)組塌陷;
var ary=[1,23,4,2,33,1,2,44,3,2,3] for(var i=0;i第四種方法:利用對(duì)象不重名的特性,對(duì)象的存儲(chǔ)是鍵值對(duì)方式,要獲取屬性值,要通過對(duì)象./[]屬性來獲取;相同則刪除,也要防止數(shù)組塌陷
var ary=[1,23,4,2,33,1,2,44,3,2,3] //新建一個(gè)對(duì)象 var obj={}; for(var i=0;i第五種方法:也是利用對(duì)象不重名的方法,但是這次是直接計(jì)算其數(shù)組各個(gè)數(shù)的重復(fù)次數(shù),
var ary=[1,23,4,2,33,1,2,44,3,2,3] var obj={}; for(var i=0;i第六種方法:使用ES6中的Set數(shù)據(jù)結(jié)構(gòu)中重復(fù)項(xiàng)不生效的特性
let arr = [1,2,3,3,2,4,5]; let list = new Set(arr); console.log("list",list); // 1,2,3,4,5但是對(duì)于數(shù)據(jù)的數(shù)據(jù)類型是不會(huì)進(jìn)行轉(zhuǎn)換的,所以一定要注意元素的數(shù)據(jù)類型是否是一致
數(shù)組去重的面試題:找出這次考試中,最高分,及最高分出現(xiàn)的次數(shù)
//思路:全部人的成績是一個(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]);
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/89563.html
摘要:區(qū)別對(duì)象和數(shù)組的六種方法方法一利用方法通過調(diào)用方法試著將該變量轉(zhuǎn)化為代表其類型的。該方法對(duì)于真正的可行參數(shù)對(duì)象轉(zhuǎn)化為時(shí)返回會(huì)轉(zhuǎn)化失敗此外,對(duì)于含有數(shù)字長度屬性的類也會(huì)轉(zhuǎn)化失敗。 區(qū)別對(duì)象和數(shù)組的六種方法(1)方法一:利用toString方法通過調(diào)用toString( )方法試著將該變量轉(zhuǎn)化為代表其類型的string。該方法對(duì)于真正的array可行;參數(shù)對(duì)象轉(zhuǎn)化為string時(shí)返回[ob...
摘要:專題系列第三篇,講解各種數(shù)組去重方法,并且跟著寫一個(gè)前言數(shù)組去重方法老生常談,既然是常談,我也來談?wù)劇K愃朴跀?shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。 JavaScript 專題系列第三篇,講解各種數(shù)組去重方法,并且跟著 underscore 寫一個(gè) unique API 前言 數(shù)組去重方法老生常談,既然是常談,我也來談?wù)劇?雙層循環(huán) 也許我們首先想到的是使用 indexOf 來循...
摘要:數(shù)組去重方法的總結(jié)前言在中數(shù)組是比較常用的,本文中總結(jié)了下數(shù)組去重的幾種常用方法,如有問題,請(qǐng)指正。 JavaScript數(shù)組去重方法的總結(jié) 前言 在JavaScript中數(shù)組是比較常用的,本文中總結(jié)了下數(shù)組去重的幾種常用方法,如有問題,請(qǐng)指正。 簡單粗暴的一種,ES6中set方法: var arr = [1,2,2,3,3,4,5,5]; console.log([...new Se...
摘要:對(duì)象構(gòu)造函數(shù)的判斷用法的每個(gè)實(shí)例都有構(gòu)造函數(shù),用于保存著用于創(chuàng)建當(dāng)前對(duì)象的函數(shù)如上所示,的實(shí)例的跟對(duì)象是相等的那么我們就可以用此來判斷數(shù)組了原型鏈上的用法屬性表示構(gòu)造函數(shù)的原型其中有一個(gè)方法是用于測試一個(gè)對(duì)象是否存在于另一個(gè)對(duì)象的原型鏈上。 在JS中,數(shù)組是屬于Object類型的,也就是屬于引用類型(引用類型存放在堆內(nèi)存中,在棧內(nèi)存會(huì)有一個(gè)或者多個(gè)地址來指向這個(gè)堆內(nèi)存)。 所以對(duì)于引用...
摘要:現(xiàn)在要求去重下面這個(gè)數(shù)組測試重復(fù)重復(fù)方法一測試重復(fù)重復(fù)去重后測試重復(fù)是新加的集合集合中的值不會(huì)重復(fù)。歡迎大家一起討論提出新的去重方法。有任何錯(cuò)誤請(qǐng)?jiān)谠u(píng)論指出。 現(xiàn)在要求去重下面這個(gè)數(shù)組 [1, 2, 3, 3, 3, 0, 1, 2, 測試, 重復(fù), 重復(fù), NaN, NaN, false, false]; 方法一:ES6 Set() let arr = [1, 2, 3, 3, 3,...
閱讀 994·2021-11-04 16:08
閱讀 2975·2021-09-13 10:37
閱讀 507·2019-08-30 15:56
閱讀 1963·2019-08-30 15:55
閱讀 2239·2019-08-30 15:53
閱讀 2083·2019-08-30 13:13
閱讀 2923·2019-08-30 12:51
閱讀 1542·2019-08-29 16:06