js 陣列去重

2021-10-08 22:34:50 字數 3913 閱讀 4379

在實際工作或面試中,我們經常會遇到「陣列去重」問題,接下來是我總結的一些實現的陣列去重的多種方法:

1.將陣列的每乙個元素依次與其他元素做比較,發現重複元素,利用陣列方法splice()刪除重複元素

var arr =[1

,23,1

,1,1

,3,23

,5,6

,7,9

,9,8

,5,5

,5,5

];function

norepeat

(arr)}}

return arr;

}var arr2 =

norepeat

(arr)

; console.

log(arr2)

//(8) [1, 23, 3, 5, 6, 7, 9, 8]

2.es6 陣列去重

var arr =[1

,23,1

,1,1

,3,23

,5,6

,7,9

,9,8

,5,5

,5,5

];console.

log(

...[

newset

(arr)])

//[1, 23, 3, 5, 6, 7, 9, 8]

3.使用雙層迴圈改變原陣列

var arr =[1

,1,2

,2,3

,3,4

,4,5

,5,4

,3,1

,2,6

,6,6

,6];

function

norepeat

(arr)}}

return arr;

} console.

log(

norepeat

(arr)

)//[1, 2, 3, 4, 5, 6]

4.借助新陣列,判斷新陣列中是否存在該元素如果不存在則將此元素新增到新陣列中(原陣列長度不變但被按字串順序排序)

var arr =[1

,1,2

,2,3

,3,4

,4,5

,5,4

,3,1

,2,6

,6,6

,6];

function

norepeat

(arr)

}return temp;

} console.

log(

norepeat

(arr)

)//[1, 2, 3, 4, 5, 6]

5.建立乙個新陣列,判斷新陣列中是否存在該元素如果不存在則將此元素新增到新陣列中

var arr =[1

,1,2

,2,3

,3,4

,4,5

,5,4

,3,1

,2,6

,6,6

,6];

function

norepeat

(arr)

}return temp;

} console.

log(

norepeat

(arr)

)//[1, 2, 3, 4, 5, 6]

6.借助indexof()方法判斷此元素在該陣列中首次出現的位置下標與迴圈的下標是否相等

var arr =[1

,1,2

,2,3

,3,4

,4,5

,5,4

,3,1

,2,6

,6,6

,6];

function

norepeat

(arr)

}return arr;

} console.

log(

norepeat

(arr)

)//[1, 2, 3, 4, 5, 6]

7.建立乙個新陣列 通過indexof方判斷當前元素在陣列中的索引如果與迴圈的下標相等則新增到新陣列中

var arr =[1

,1,2

,2,3

,3,4

,4,5

,5,4

,3,1

,2,6

,6,6

,6];

function

norepeat

(arr)

}return temp;

} console.

log(

norepeat

(arr)

)//[1, 2, 3, 4, 5, 6]

8.利用陣列中的filter方法

var arr =[,

"banana"

,"pear",,

"orange"

,"orange"];

var arr2 = arr.

filter

(function

(value,index,self));

console.

log(arr2)

;

9.利用空物件來記錄新陣列中已經儲存過的元素

var arr =[1

,23,1

,1,1

,3,23

,5,6

,7,9

,9,8

,5,5

,5];

var obj=

;var arr2=

;for

(var i=

0;iconsole.

log(arr2)

;//[1, 23, 3, 5, 6, 7, 9, 8]

10.借助兩個新陣列

var arr =[1

,23,1

,1,1

,3,23

,5,6

,7,9

,9,8

,5,5

,5];

var arr2=

;for

(var i=

0;i// console.log(arr3);

if(arr3.length ==0)

} console.

log(arr2)

;//[1, 23, 3, 5, 6, 7, 9, 8]

11.此方法沒有借助新陣列直接改變原陣列,並且去重後的陣列被排序

var arr =[1

,23,1

,1,1

,3,23

,5,6

,7,9

,9,8

,5];

console.

log(arr)

;function

norepeat

(arr)

else

}return arr;

}var arr2=

norepeat

(arr)

; console.

log(arr2)

;//[1, 23, 3, 5, 6, 7, 8, 9]

JS陣列去重,物件去重

例項1根據indexof去重,indexof的好處就是返回的是首次出現的位置,這樣後面即使出現的值一樣,也只能返回第一次出現的索引,當然這個只適用於簡單的陣列 物件陣列去重 const objarr const obj const newobjarr for let i 0 i objarr.len...

js 陣列去重

function unique arr if isrepeated return result 建立乙個新的陣列,迴圈原有的陣列,每取乙個數就迴圈判斷新建的陣列中是否有和這個相等的值,沒有則插入。方法簡單,但是有雙重迴圈,陣列大了之後效率低。所以能一次迴圈解決最好。var str new array...

JS 陣列去重

我總共想出了三種演算法來實現這個目的 array.prototype.unique1 function return n array.prototype.unique2 function r n為hash表,r為臨時陣列 for var i 0 i this.length i 遍歷當前陣列 retu...