ES6 数组去重的方法

188 阅读1分钟
第一种方法

利用for循环遍历数组的每一项进行对比看是否重复,如果重复了,用splice()方法去除重复

splice(index,howmany,item1,.....,itemX) 向数组中添加/删除项目,然后返回被删除的项目
参数
index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置
howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目
item1,...,itemX:可选。向数组添加的新项目

第二种方法

利用indexOf()方法,可返回数组中某个指定的元素位置

如果要检索的字符串值没有出现,则该方法返回 -1

第三种方法

利用includes() 方法用于判断字符串是否包含指定的子字符串。

第四种方法

利用Set()方法,因为Set()方法中成员的值都是唯一的,没有重复的值

let arr = [12321342636];
// 第一种方法 利用for循环实现数组去重
let unique = (arr) => {
    // 第一层for循环 数组前一项
    for (let i = 0; i < arr.length; i++) {
        // 第二层for循环 数组后一项
        for (let j = i + 1; j < arr.length; j++) {
            if (arr[i] === arr[j]) {
                arr.splice(j, 1);  //移出重复数组
                j--;  //修正下标
            }
        }
    }
    return arr;
}
unique(arr)
console.log(arr);  //[ 1, 2, 3, 4, 6 ]

// 第二种方法 利用indexOf实现数组去重
let unique = (arr) => {
    let newArr = [];
    for (let i = 0; i < arr.length; i++) {
        if (newArr.indexOf(arr[i]) === -1) {
            newArr.push(arr[i])
        }
    }
    return newArr;
}
console.log(unique(arr));  //[ 1, 2, 3, 4, 6 ]

// 第三种方法 利用includes实现数组去重
let unique=(arr)=>{
    let newArr = [];
    for(let i = 0; i <arr.length;i++){
        if(!newArr.includes(arr[i])){
            newArr.push(arr[i]);
        }
    }
    return newArr;
}
console.log(unique(arr));  //[ 1, 2, 3, 4, 6 ]

// 第四种方法 利用Set()方法实现数组去重
let set = new Set(arr);
let [...a] = set;
console.log(a);  //[ 1, 2, 3, 4, 6 ]