美文网首页工作生活
数组去重的几种方法

数组去重的几种方法

作者: LELIN | 来源:发表于2019-07-04 19:13 被阅读0次

    一、使用 indexOf 方法

    indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。

    1、方法一:

    let arr1 =  [1,2,1,3,1,5,2,3,6,4,1,2,5,3]
    
    let arr2 = []
    
    for(let i = 0; i < arr1.length ; i++) {
    
        //通过indexOf判断arr1中当前元素的位置是否与index相等
        if(arr1.indexOf(arr1[i]) === i){
    
             arr2.push(arr1[i])
    
        }
    
    }
    

    2、方法二:

    let arr = [1,2,1,3,1,5,2,3,6,4,1,2,5,3]
    
    function uniq(arr) {
    
        let arr2 = []
    
        for (let i = 0 ; i < arr.length ; i++){
    
            //判断arr2中是否有当前元素
            if(arr2.indexOf(arr[i]) === -1) {
    
                arr2.push(arr[i])
    
            }
    
        }
    
        return arr2
    
    }
    
    uniq(arr)
    
    

    二、使用内置 Array.prototype.filter() 方法

    filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。如果没有任何数组元素通过测试,则返回空数组。

    let arr = [1,2,1,3,1,5,2,3,6,4,1,2,5,3]
    
    let arr2 = arr.filter((element ,index , self) => {
    
        return self.indexOf(element) === index
    
    })
    
    console.log(arr2)
    
    

    三、使用内置 Array.prototype.includes() 方法

    includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。对象数组不能使用includes方法来检测。

    第一个参数:要搜索的内容
    第二个参数:开始位置(大于数组长度时,整个数组不会被搜索,索引位置小于0时,数组每一项都会被搜索)

    console.log([1, 2, 3].includes(2));     // true
    console.log([1, 2, 3].includes(4));     // false
    console.log([1, 2, 3].includes(3, 3));  // false
    console.log([1, 2, 3].includes(3, 0)); // true
    console.log([1, 2, NaN].includes(NaN)); // true
    
    function uniq(arry){
    
        var result = [];
    
        for(var i =0; i < arry.length; i++) {
    
            if(!result.includes(arry[i])) {
    
                //如 result 中没有 arry[i],则添加到数组中
                result.push(arry[i]) 
    
           }
    
        }
    
        return console.log(result);
    
    }
    
    uniq([1,2,1,3,1,5,2,3,6,4,1,2,5,3])
    

    四、ES6-Set方法

    ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set函数可以接受一个数组作为参数,用来初始化。

    // 例一
    const set = new Set([1, 2, 3, 4, 4]);
    [...set]
    // [1, 2, 3, 4]
    
    // 例二
    const items = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
    items.size // 5
    
    let arr = [1,2,1,3,1,5,2,3,6,4,1,2,5,3]
    
    function uniq(ar) {
    
        return [...new Set(ar)]
    
    }
    
    uniq(arr)
    
    

    相关文章

      网友评论

        本文标题:数组去重的几种方法

        本文链接:https://www.haomeiwen.com/subject/jktthctx.html