(先注明一下我在饑人谷學(xué)習(xí)了大概兩個(gè)月的時(shí)間返帕,本身有html和css基礎(chǔ)邦泄,js聽(tīng)身邊的人耳濡目染了一些但是對(duì)我而言js還是一門比較陌生的語(yǔ)言串远,現(xiàn)在已經(jīng)學(xué)完了js的基礎(chǔ)課程)今天寫(xiě)的是一個(gè)很基礎(chǔ)的數(shù)組去重汹族,時(shí)間比較短锚国,就花了一會(huì)寫(xiě)了一下數(shù)字的去重蒙袍,不足之處還請(qǐng)多多指教啦~貼代碼
//第一種是在原數(shù)組的基礎(chǔ)上操作俊卤,直接去重復(fù)(起名也很招人罵……還請(qǐng)大家多多包涵)
var arr = [1,1,3,5,2,4,7,2,8,9,2,5,6,6,6,6,6,8,81,0]
var array = arr.sort(function(a,b){return a-b})
function two(arr){
for(var i = 0; i<arr.length; i++){
if(arr[i] === arr[i-1]){
arr.splice(i,1)
two(arr)
}
}
return arr
}
two(array)
//第二種是不改變?cè)瓟?shù)組,新建一個(gè)數(shù)組進(jìn)行操作害幅,這就涉及到了引用類型的問(wèn)題消恍,js引用類型的相關(guān)概念大家可以理解一下,我曾經(jīng)寫(xiě)過(guò)一篇文章里面提到了引用類型的一點(diǎn)概念 http://www.reibang.com/p/f0afab6dd680
var arr = [1,1,3,5,2,4,7,2,8,9,2,5,6,6,6,6,6,8,81,0]
var array = arr.sort(function(a, b){return a - b})
function one(arr){
var arr2 = []
for(var i = 0; i <arr.length; i++){
arr2.push(arr[i])
}
return arr2
}
function go(numberGroup){
for(var j = 0; j<numberGroup.length; j++){
if(numberGroup[j] === numberGroup[j-1]){
numberGroup.splice(j,1)
go(numberGroup) //這里使用了遞歸
}
}
return numberGroup.sort(function(a, b){return a - b})
}
var arr3 = one(array)
go(arr3)
console.log(arr)
//里面使用了遞歸以现,遞歸的概念簡(jiǎn)單的理解就是自己調(diào)用自己狠怨,還是用自己的方法,繼續(xù)處理已有的數(shù)據(jù)來(lái)達(dá)到層層篩選達(dá)到目的的方法
這是第二種去重的實(shí)驗(yàn)結(jié)果
隔了很長(zhǎng)時(shí)間邑遏,今天發(fā)現(xiàn)了一種更簡(jiǎn)單的寫(xiě)法
var arr = [1,1,3,5,2,4,7,2,8,9,2,5,6,6,6,6,6,8,81,28,76,11,11,23,22,44,33,1,5,0]
function unique(arr) {
var ret = []
for (var i = 0; i < arr.length; i++) {
var item = arr[i]
if (ret.indexOf(item) === -1) {
ret.push(item)
}
}
return ret
}
//遍歷原數(shù)組佣赖,原數(shù)組每個(gè)數(shù)組我都能得到,我直接去判斷新數(shù)組中的某一個(gè)數(shù)字是否從來(lái)沒(méi)出現(xiàn)過(guò)无宿,如果沒(méi)出現(xiàn)茵汰,那么ret中這個(gè)數(shù)字的indexOf就是-1,我就把這個(gè)數(shù)字拿到ret中來(lái)孽鸡,然而缺點(diǎn)是IE6-8根本不支持indexOf這個(gè)方法蹂午。
后續(xù)可能還會(huì)繼續(xù)更新的一個(gè)數(shù)組去重……