JS實現陣列去重方法大總結

2022-04-01 20:19:10 字數 2942 閱讀 2004

js陣列根據物件中的元素去重:

var arr2 =[

, ,

, ,

, ]function

arrayunique2(arr, name) ;

return arr.reduce(function

(item, next) , );

}console.log(arrayunique2(arr2, "name"));

console.log(arrayunique2(arr2, "num"));

方法一:

雙層迴圈,外層迴圈元素,內層迴圈時比較值

如果有相同的值則跳過,不相同則push進陣列

1 array.prototype.distinct = function

()13}14

}15return

arr;

16};

17var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];

18var b =a.distinct();

19 console.log(b.tostring()); //

1,2,3,4,5,6,56

方法二:利用splice直接在原陣列進行操作

雙層迴圈,外層迴圈元素,內層迴圈時比較值

值相同時,則刪去這個值

注意點:刪除元素之後,需要將陣列的長度也減1.

1 array.prototype.distinct = function

()13}14

}15return

arr;

16};

17var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];

18var b =a.distinct();

19 console.log(b.tostring()); //

1,2,3,4,5,6,56

優點:簡單易懂

缺點:占用記憶體高,速度慢

方法三:利用物件的屬性不能相同的特點進行去重

1 array.prototype.distinct = function

(),5 result =,

6 len =arr.length;

7for(i = 0; i< arr.length; i++)12}

13return

result;

14};

15var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];

16var b =a.distinct();

17 console.log(b.tostring()); //

1,2,3,4,5,6,56

方法四:陣列遞迴去重

運用遞迴的思想

先排序,然後從最後開始比較,遇到相同,則刪除

1 array.prototype.distinct = function

())7

function

loop(index)

12 loop(index - 1); //

遞迴loop函式進行去重13}

14}15 loop(len-1);

16return

arr;

17};

18var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,56,45,56];

19var b =a.distinct();

20 console.log(b.tostring()); //

1,2,3,4,5,6,45,56

方法五:利用indexof以及foreach

1 array.prototype.distinct = function

()10

})11

return

result;

12};

13var a = [1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,2,3,3,2,2,1,23,1,23,2,3,2,3,2,3];

14var b =a.distinct();

15 console.log(b.tostring()); //

1,23,2,3

方法六:利用es6的set

set資料結構,它類似於陣列,其成員的值都是唯一的。

利用array.from將set結構轉換成陣列

1

function

dedupe(array)

4 dedupe([1,1,2,3]) //

[1,2,3]

拓展運算子(...)內部使用for...of迴圈

let arr = [1,2,3,3];

let resultarr = [...new

set(arr)];

console.log(resultarr);

//[1,2,3]

下面給大家補充介紹合併陣列並去重的方法

一、concat()方法

思路:concat() 方法將傳入的陣列或非陣列值與原陣列合併,組成乙個新的陣列並返回。該方法會產生乙個新的陣列。

function

concatarr(arr1, arr2)

總結

以上所述是js實現陣列去重方法總結(六種方法),希望對大家有所幫助!

js陣列去重方法總結

暴力去重,利用迴圈每次判斷當前元素是否在陣列中別的地方出現過,此處不展開介紹 利用 es6 的 set 是不重複集合的特性 function reducerepeatbyset arr 利用object的key不能重複的特性 function reducerepeatbyobject arr let...

Js陣列去重方法總結

方法一 var arr 1,23,1,1,1,3,23,5,6,7,9,9,8,5 function removeduplicateditem arr return arr arr2 removeduplicateditem arr console.log arr console.log arr2 ...

js陣列去重方法總結

1.es6中的set去重 語法new set 要去重的陣列 返回乙個陣列 eg var arr1 1,3,4,1,4,5,7,nan,true,null,true,hahah kk hahah nan,null var arr2 new set arr1 console.log arr1 conso...