JavaScript数组去重

2024-04-25 340 0

1. 使用Set:将数组转换为Set对象,Set对象会自动去除重复元素,之后再将使用Array.from或展开运算符...将Set对象转换为数组。

const arr = [1,2,3,4,2,3,5];
const uniqueArr = Array.from(new Set(arr));
//或
//const uniqueArr = [...new Set(arr)];
console.log(uniqueArr) // [1, 2, 3, 4, 5]

2. 使用filter()方法:通过filter()方法遍历数组,使用indexOf()判断返回仅包含首次出现的元素的新数组。

const arr = [1,2,3,4,2,3,5];
const uniqueArr = arr.filter((item,index)=>{
    return arr.indexOf(item) === index;
});
console.log(uniqueArr) // [1, 2, 3, 4, 5]

3. 使用reduce()方法:通过reduce()方法遍历数组,将元素存储在一个临时对象中,每次遇到重复元素时将其跳过,最后返回所有不重复元素的数组。

const arr = [1,2,3,4,2,3,5];
const uniqueArr = arr.reduce((prev,cur)=>{
    return prev.includes(cur) ? prev : [...prev, cur]
},[]);
console.log(uniqueArr) // [1, 2, 3, 4, 5]

4. 使用Map:通过Map对象可以将数组元素作为键,通过Map的键唯一性特性去重,然后再将Map对象转换为数组。

 const arr = [1, 2, 3, 4, 2, 3, 5];
 const uniqueArr = [...new Map(arr.map(item => [item, item])).values()]
 console.log(uniqueArr); // [1, 2, 3, 4, 5]

5. 利用splice方法去除:这个方法有点模仿冒泡 俩层循环,外层循环遍历数组,内层循环比较值,如果有相同, 则使用splice去除 然后返回处理完的数组即可。

const arr = [1, 2, 3, 4, 2, 3, 5];
const uniqueArr = (arr) => {
    let newArr = JSON.parse(JSON.stringify(arr))
    for(let i = 0; i < newArr.length; i++) {
        for(j = i + 1; j < newArr.length; j++) {
            if(newArr[i] === newArr[j]) {
                newArr.splice(j, 1);
            }
        }
    }
    return newArr;
}
console.log(uniqueArr(arr)); //[1, 2, 3, 4, 5]

6.利用indexOf方法去除:创建一个新数组,然后循环要去重的数组,然后在新数组中找要去重数组中的值,如果找不到则使用push方法添加到新数组。

const arr = [1, 2, 3, 4, 2, 3, 5];
let uniqueArr = [];
arr6.forEach(item => {
    if(uniqueArr.indexOf(item) === -1) {
        uniqueArr.push(item);
    }
});
console.log(uniqueArr) //[1, 2, 3, 4, 5]

相关文章

JavaScript 数组方法(三)
JavaScript 数组方法(二)
JavaScript 数组方法(一)
JS身份证精确校验
前端js实现打包下载文件
前端pdf文件在线预览

发布评论