第一種:indexOf (獲取字串值在字串中首次出現的位置,若沒有這個值,則返回-1)
let arr = [15,45,88,45,78,15,55,88];
let arr1 = []; //宣告新陣列
for(let i in arr){ //for...in 遍歷陣列
if(arr1.indexOf(arr[i]) == -1){ 使用indexOf 判斷arr1和arr 裡面是否有相同的,沒有就新增,有就不新增;
arr1.push(arr[i]);
}
}
console.log(arr1);
第二種:雙for迴圈 (每一個資料進行判斷)
let arr = [15, 45, 88, 45, 78, 15, 55, 88];
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) { //判斷是否遇到相同的元素
arr.splice(j, 1);//遇到就刪除一個元素
j--; //陣列的總長度發生了改變,進行j--
}
}
}
console.log(arr);
第三種:filter
let arr = [15, 45, 88, 45, 78, 15, 55, 88];
function fn(arr){
return arr.filter((item,index,arr)=>{
return arr.indexOf(item,0) === index; //當前元素,在原始陣列中的第一個索引==當前索引值,否則返回當前元素
});
}
console.log(fn(arr));
第四種:Set (ES6)
let arr = [15, 45, 88, 45, 78, 15, 55, 88];
let s = new Set(arr) //實現陣列去重,但不是陣列型別
arr = [...new Set(arr)]; //轉為arrAry型別
console.log(arr);
第五種:[...new Set(arrAry)] (ES6)
let arr = [15, 45, 88, 45, 78, 15, 55, 88];
arr = [...new Set(arr)];
console.log(arr);