關于數(shù)組去重

(先注明一下我在饑人谷學習了大概兩個月的時間,本身有html和css基礎,js聽身邊的人耳濡目染了一些但是對我而言js還是一門比較陌生的語言,現(xiàn)在已經(jīng)學完了js的基礎課程)今天寫的是一個很基礎的數(shù)組去重,時間比較短,就花了一會寫了一下數(shù)字的去重,不足之處還請多多指教啦~貼代碼

//第一種是在原數(shù)組的基礎上操作,直接去重復(起名也很招人罵……還請大家多多包涵)
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)
//第二種是不改變原數(shù)組,新建一個數(shù)組進行操作,這就涉及到了引用類型的問題,js引用類型的相關概念大家可以理解一下,我曾經(jīng)寫過一篇文章里面提到了引用類型的一點概念 http://www.itdecent.cn/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)
//里面使用了遞歸,遞歸的概念簡單的理解就是自己調用自己,還是用自己的方法,繼續(xù)處理已有的數(shù)據(jù)來達到層層篩選達到目的的方法

這是第二種去重的實驗結果


數(shù)組去重.png

隔了很長時間,今天發(fā)現(xiàn)了一種更簡單的寫法

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ù)組每個數(shù)組我都能得到,我直接去判斷新數(shù)組中的某一個數(shù)字是否從來沒出現(xiàn)過,如果沒出現(xiàn),那么ret中這個數(shù)字的indexOf就是-1,我就把這個數(shù)字拿到ret中來,然而缺點是IE6-8根本不支持indexOf這個方法。

后續(xù)可能還會繼續(xù)更新的一個數(shù)組去重……

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容