JS實現陣列去重(重複的元素只保留乙個)

2022-01-15 08:08:34 字數 1585 閱讀 9850

1.遍歷陣列法

它是最簡單的陣列去重方法(indexof方法)

實現思路:新建乙個陣列,遍歷去要重的陣列,當值不在新陣列的時候(indexof為-1)就加入該新陣列中;

var arr=[2,8,5,0,5,2,6,7,2];

function unique1(arr)

} return hash;

}

2.陣列下標判斷法呼叫indexof方法,效能和方法1差不多

實現思路:如果當前陣列的第 i 項在當前陣列中第一次出現的位置不是 i,那麼表示第 i 項是重複的,忽略掉。否則存入結果陣列。

function unique2(arr)

} return hash;

}

3.排序後相鄰去除法實現思路:給傳入的陣列排序,排序後相同的值會相鄰,然後遍歷排序後陣列時,新陣列只加入不與前一值重複的值。

function unique3(arr)

} return hash;

}

4.優化遍歷陣列法(推薦)實現思路:雙層迴圈,外迴圈表示從0到arr.length,內迴圈表示從i+1到arr.length

將沒重複的右邊值放入新陣列。(檢測到有重複值時終止當前迴圈同時進入外層迴圈的下一輪判斷)

function unique4(arr)

}hash.push(arr[i]);

} return hash;

}

上面遍歷經過測試後有bug,並不能完全去重

因為這次我做的是對js物件元素去重,我在參考時發現此bug,如果時陣列去重,建議用第一種方法。

quan_lst 裡面是乙個乙個的js字面量物件,根據json裡面的屬性進行判定去重

}5.es6實現基本思路:es6提供了新的資料結構set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。

set函式可以接受乙個陣列(或類似陣列的物件)作為引數,用來初始化。

function unique5(arr)
擴充套件:如果重複,則去掉該元素

陣列下標去重

function unique22(arr)

} return hash;

}

補充:原先自己一直以為indexof是針對字串,原來indexof也可以查詢出陣列元素所在的陣列中的位置(以0開始計算),

以上**於軒悅的部落格,學了很多思路。自己的是php碼農,對前端一直也處於了解。看來得加強前端內功了。

JS遍歷陣列,實現陣列去重(重複的元素只保留乙個)

1.遍歷陣列法 它是最簡單的陣列去重方法 indexof方法 實現思路 新建乙個陣列,遍歷去要重的陣列,當值不在新陣列的時候 indexof為 1 就加入該新陣列中 var arr 2,8,5,0,5,2,6,7,2 function unique1 arr return hash 2.陣列下標判斷...

JS實現陣列去重(重複的元素只保留乙個)

1.遍歷陣列法 它是最簡單的陣列去重方法 indexof方法 實現思路 新建乙個陣列,遍歷去要重的陣列,當值不在新陣列的時候 indexof為 1 就加入該新陣列中 var arr 2,8,5,0,5,2,6,7,2 function unique1 arr return hash 2.陣列下標判斷...

JS實現陣列去重(重複的元素只保留乙個)

1.遍歷陣列法 它是最簡單的陣列去重方法 indexof方法 實現思路 新建乙個陣列,遍歷去要重的陣列,當值不在新陣列的時候 indexof為 1 就加入該新陣列中 var arr 2,8,5,0,5,2,6,7,2 function unique1 arr return hash 2.陣列下標判斷...