數組去重。。。。

數組去重兩種思路:

1.在原有數組基礎上進行去重
2.申請新的數組進行去重操作

原有數組上進行操作:

  1. es6 set方法去重
function unique(arr){
    return Array.from(new Set(arr))
}
  1. splice直接去重
function unique2(arr){
    for(let i=0;i<arr.length;i++){
        for(let j=i+1;j<arr.length;j++){
            if(arr[i]===arr[j]){
                arr.splice(j,1)
                j--
            }
        }
    }
    return arr
}
  1. 利用hasOwnProperty判斷是否存在對象屬性
function unique5(arr) {
    let obj={}
    return arr.filter(function (item,index,arr) {
        return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item+item]=true)
      })
}
  1. 利用好filter去判斷當前元素是否等於原始數組中出現的第一個索引值
function unique6(arr) {
    return arr.filter(function (item,index,arr) {
        return arr.indexOf(item,0)===index
    })
}

申請新的數組去重操作

  1. indexOf判斷
function unique1(arr) {
    if(!Array.isArray(arr)){
        return 0
    }
    let result=[];
    for(let i=0;i<arr.length;i++){
        if(result.indexOf(arr[i])===-1){
            result.push(arr[i])
        }
    }
    return result
}
  1. 排序,相鄰進行操作
function unique3(arr){
    if(!Array.isArray(arr)){
        return 0
    }
    arr.sort((a,b)=>{
        return a-b
    });
    let result=[arr[0]]
    for(let i=1;i<arr.length;i++){
        if(arr[i]!==arr[i-1]){
            result.push(arr[i])
        }
    }
    return result
}
  1. 利用對象的屬性不能相同的特點進行去重
function unique4(arr) {
    if(!Array.isArray(arr)){
        return 0
    }
    let result=[]
    let obj={}
    for(let i=0;i<arr.length;i++){
        if(!obj[arr[i]]){
            result.push(arr[i])
            obj[arr[i]]=1
        }else{
            obj[arr[i]]++
        }
    }
    return result
}
  1. map數據結構去重
function unique7(arr) {
    let map=new Map()
    let result=new Array();
    for(let i=0;i<arr.length;i++){
        if(map.has(arr[i])){
            map.set(arr[i],true)
        }else{
            map.set(arr[i],false)
            result.push(arr[i])
        }
    }
    return result;
}

結束。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章