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...