js中陣列去重的幾種實現方式 區別

2021-10-06 06:31:35 字數 3699 閱讀 6234

1. 利用es6的 set 方法(常用)

說明:

缺點:無法去除陣列中的空物件

let ary =[12

,23,12

,15,25

,23,25

,14,16

];ary =

[...

newset

(ary)];

console.

log(ary)

;

let ary =[12

,23,12

,15,25

,23,25

,14,16

];ary = array.

from

(new

set(ary));

console.

log(ary)

;

2. 其餘方法

// 1,2,3,'a','2',null,nan,undefined,,true 10項

var arr =[3

,'a',1

,2,2

,3,'2',3

,null

,nan

,null

,nan

, undefined,

, undefined,

true,,

true];

// 方法一:利用splice方法去重

// 說明:用雙層for迴圈巢狀,用每一項與另外得其他項一一對比,若相同則刪除後面的相同項

function

newarr

(arr)}}

return arr;

} console.

log(

newarr

(arr));

// 0: 3

// 1: "a"

// 2: 1

// 3: 2

// 4: null

// 5: nan

// 6: nan

// 7:

// 8:

// length: 9

// 缺少:underfined ,true

// 無法處理: nan, ,2 與 '2'

// 方法二:indexof

// 說明:建立乙個新陣列,在新陣列中利用indexof方法判斷陣列中是否有相同值,無則返回-1,然後將該項push進去新陣列

function

newarr2

(arr)

}return result;

} console.

log(

newarr2

(arr)

)// 0: 3

// 1: "a"

// 2: 1

// 3: 2

// 4: "2"

// 5: null

// 6: nan

// 7: nan

// 8: undefined

// 9:

// 10: true

// 11:

// length: 12

// 缺少: 無

// 無法處理: nan,

// 方法三:set 與 array.from

// 說明:set是es6的新資料結構,類似於陣列,但本身沒有重複值,array.from可以用於將兩類物件轉為真正的陣列:類似陣列物件,可遍歷物件

function

newarr3

(arr)

console.

log(

newarr3

(arr)

)// 0: 3

// 1: "a"

// 2: 1

// 3: 2

// 4: "2"

// 5: null

// 6: nan

// 7: undefined

// 8:

// 9: true

// 10:

// 11: {}

// 12: {}

// length: 13

// 缺少:無

// 無法處理: ,{}

// 方法四:擴充套件運算子與set

// 說明:使用...簡化了方法三的**

var newarr4 =

[...

newset

(arr)];

console.

log(newarr4)

;// 0: 3

// 1: "a"

// 2: 1

// 3: 2

// 4: "2"

// 5: null

// 6: nan

// 7: undefined

// 8:

// 9: true

// 10:

// length: 11

// 缺少: 無

// 無法處理:

// 方法五:利用物件屬性去重

// 說明:每次去原陣列的元素,然後再物件中訪問這個屬性,在進行對比、

array.prototype.

unique

=function()

;var newarr =

;for

(var i=

0; i <

this

.length; i++)}

return newarr;

} console.

log(arr.

unique()

);// 0: 3

// 1: "a"

// 2: 1

// 3: 2

// 4: null

// 5: nan

// 6: undefined

// 7:

// 8: true

// length: 9

// 無法識別:無

// 無法處理: '2' 與 2

// 推薦使用

// 方法六: sort排序

// 說明:先判斷是否為陣列;

// 通過sort方法將排序後的陣列儲存在臨時變數temp中,儲存temp的第0項即為1,再通過for迴圈對比前後兩項的值,不同則存入陣列

function

newarr5

(arr)

temp = arr.

sort()

;var result =

[temp[0]

];for(

var i =

1; ireturn result;

} console.

log(

newarr5

(arr));

// 0: 1

// 1: 2

// 2: "2"

// 3: 3

// 4: nan

// 5: nan

// 6:

// 7:

// 8: "a"

// 9: null

// 10: true

// 11: undefined

// length: 12

// 無法識別:無

// 無法處理: nan ,

js陣列去重的幾種方式

雙重for迴圈去重 思路 i 1,2,2,2,3,true,undefined,true true undefined undefined 7,8,9 從第乙個元素開始 j 2,2,2,3,true,undefined,true true undefined undefined 7,8,9 2,2,...

陣列去重的幾種方式

function uniquearray arr 複製 優點 簡潔,速度快,時間複雜度為o n 缺點 需要乙個額外的set和array的儲存空間,空間複雜度為o n function uniquearray arr return arr 複製 優點 不需要使用額外的儲存空間,空間複雜度為o 1 缺點...

js陣列去重的多種實現方式

將結果函式中的元素與原陣列中的元素依次比較,重複的元素捨棄,不重複的元素新增僅結果函式。function removerepeatarr arr if isrepeat return result const arr 1,2,1,2,3,3,4,5 console.log removerepeata...