方法一(使用es6新增的set構造函數)
function DeWeight(arr){
return [...new Set(arr)]
}
console.log(DeWeight([1,2,"2",3,5,3,2]))
複製代碼
方法二: (使用indexOf方法)
function DeWeight(arr){
/**
* 第一步:初始化一個新數組
* 第二步:遍歷傳進來的數組,拿數組中的每個元素經過indexOf函數裏面查找,
* 若是沒查出來,就把當前元素丟到新數組中,不然已經有了,管它弄啥
*/
let newArr = []
for(let i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i])
}
}
return newArr
}
console.log(DeWeight([1,2,"2",3,5,3,2]))
複製代碼
方法三:(雙循環)
function DeWeight(arr){
/**
* 第一步: 初始化一個數組
* 第二步:使用雙層循環,拿外層循環中的一個元素跟後面的全部元素進行比較,
* 若是都不相等,就把它push到新數組中,不然外層下表+1,繼續比較
*
* 注:實現原理是每一個元素都跟後面的元素比較,取相同元素的最後一個元素
*/
let newArr = []
for(let i=0;i<arr.length;i++){
for(let j=i+1;j<arr.length;j++){
if(arr[i] === arr[j]){
i++
}
}
newArr.push(arr[i])
}
return newArr
}
console.log(DeWeight([1,2,"2",2,3,5,3]))
複製代碼
方法四:(es6數組中的filter方法)
function DeWeight(arr){
/**
* 第一步:初始化一個map對象
* 第二步:經過數組的filter方法過濾全部元素,利用map的has方法判斷傳進來的每個元素,
* 若是此元素沒有在map裏面,就+到map裏面去返回true,不然false
*
* 注:數組的filter() map的has() set()
*/
var map=new Map();
let newArr = arr.filter(function(item){
if(!map.has(item)){
map.set(item)
return true
}else{
return false
}
})
return newArr
}
console.log(DeWeight([1,2,"2",2,3,5,3]))
複製代碼
方法五:(es6數組中的includes方法)
function DeWeight(arr){
/**
* 第一步:初始化一個新數組
* 第二步:遍歷傳進來的數組,經過使用數組的includes方法判斷每個元素是否在新數組中,
* 若是沒有,就把此元素丟到新數組中,不然下一個
*/
let newArr = []
for(let i=0;i<arr.length;i++){
if(!newArr.includes(arr[i])){
newArr.push(arr[i])
}
}
return newArr
}
console.log(DeWeight([1,2,"2",3,5,3,2]))
複製代碼