アレイの重複排除について知っているソリューションはいくつありますか?

方法1:スルーセット

// 借助Set实现数组去重
const arr = [2,3,5,6,8,6,8,2,9];

const unique = [...new Set(arr)]
console.log(unique);  // [2,3,5,6,8,9]

方法2:オブジェクトを介して

まず、重複排除する配列の各要素をオブジェクトのキーと値と等しくします。すでに存在する場合は、スプライスを使用して配列を削除します。このとき、添え字の変更に注意する必要があります。

// 通过对象实现数组去重
const arr = [2,3,5,6,8,6,8,2,9];
const obj = {
    
    };

for (let i = 0; i < arr.length; i++) {
    
    
    const item = arr[i]
    if (obj[item]) {
    
    
        arr.splice(i,1);
        i--;
    } else {
    
    
        obj[item] = item
    }
}
console.log(arr); // [2,3,5,6,8,9]

方法3:indexOfと-1の関係を使用してトラバースします

// 利用indexOf和-1的关系实现数组去重
const arr = [2,3,5,6,8,6,8,2,9];

const res = [];
arr.forEach(item => {
    
    
    if (res.indexOf(item) === -1) {
    
    
        res.push(item);
    }
})
console.log(res);  // [2,3,5,6,8,9]

方法4:filterとindexOfの関係を使用する

// 利用filter和indexOf结合
const arr = [2,3,5,6,8,6,8,2,9];
const unique = arr.filter((item,index) => {
    
    
    return arr.indexOf(item) === index
})
console.log(unique);  // [2,3,5,6,8,9]

方法5:並べ替え+スプライスを使用する

// 利用sort + splice
const arr = [2,3,5,6,8,6,8,2,9];

arr.sort((next,pre) => next - pre);

for (let i = 0;i < arr.length; i++) {
    
    
    if (arr[i] === arr[i + 1]) {
    
    
        arr.splice(i,1);
        i--;
    }
}
console.log(arr);  // [2,3,5,6,8,9]

方法6:マップの助けを借りて

// 借助Map
const arr = [2,3,5,6,8,6,8,2,9];
const map = new Map();
const unique = [];

for (let v of arr) {
    
    
    if (!map.has(v)) {
    
    
        map.set(v,true);
        unique.push(v)
    }
}
console.log(unique);  //[2,3,5,6,8,9]

方法7:reduce+インクルードの助けを借りて

// 借助reduce + includes
const arr = [2,3,5,6,8,6,8,2,9];

const unique = arr.reduce((pre,cur) => {
    
    
    return pre.includes(cur) ? pre : [...pre,cur]
},[])

console.log(unique);  // [2,3,5,6,8,9]

JSON.stringifyを使用した複雑なデータ型の配列重複排除

// 复杂数据类型借助 JSON.stringify
const arr = [2,3,5,6,8,6,8,[7],[7],2,9];
const unique = [];
arr.forEach(item => {
    
    
    let flag = false;
    unique.forEach(item1 => {
    
    
        if (JSON.stringify(item1) === JSON.stringify(item)) {
    
    
            flag = true;
        }
    })
    if (!flag) {
    
    
        unique.push(item);
    }
})
console.log(unique);  // [2,3,5,6,8,[7],9]

おすすめ

転載: blog.csdn.net/sinat_41696687/article/details/123669765