JS 中常用的去重

man發表於2021-12-14

第一種: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);

 

相關文章