美文网首页算法和数据结构
使用Set进行数组去重

使用Set进行数组去重

作者: 橘子柚子橙子_ | 来源:发表于2018-07-07 18:47 被阅读39次

    关键词:ES6,set,Array.from(set),[...set],数组去重

    使用Set进行数组去重方法,如下:

    const arr = new Set([1,2,3,4,4,5])
    [...arr]
    // 去重,返回[1,2,3,4,5]
    
    const arr = new Set([1,2,3,4,4,5])
    Array.from(arr)
    // 去重,返回[1,2,3,4,5]
    

    Set 概述

    Set是ES6提供的新的数据结构,它类似于数组。但是它的成员都是独一无二的,没有重复的值。根据它的这个特点,可以用来对数组进行去重操作。可以按照插入的顺序迭代其中的元素。

    Set 语法

    new Set([iterable])
    // 返回一个新的Set对象
    

    其他的数组去重方法

    let arr = [1,2,3,4,4,5]
    
    // 1. 只用循环的方式
    Array.prototype.unique1 = function () {
        let res = [] // 存放去重后的数组
        let mark = {} // 用来检测重复的值
        for (let i = 0, arrayLen = this.length; i < arrayLen; i++) {
            if (!mark[this[i]]) {
                res.push(this[i])
                mark[this[i]] = true
            } else {
                console.log(`重复的值是:${this[i]}`)
            }
        }
        return res
    }
    
    // 2. 使用indexOf()
    Array.prototype.unique2 = function () {
        let res = [] // 存放去重后的数组
        for (let i = 0, arrayLen = this.length; i < arrayLen; i++) {
            // 如果this[i]没有在res中,则push进去
            if (res.indexOf(this[i]) === -1) {
                res.push(this[i])
            }
        }
        return res
    }
    
    // 3. 使用sort()先进行排序,如果当前元素与前一个元素相同,则为重复的元素
    Array.prototype.unique3 = function () {
        // 存放去重后的数组
        // 把目标数组的第一个元素放进去,后面的循环从目标数组的第二个元素开始
        let res = [this[0]]
        // 在原目标数组的基础上进行排序
        this.sort() 
        for (let i = 1, arrayLen = this.length; i < arrayLen; i++) {
            if (this[i] !== this[i-1]) {
                res.push(this[i])
            }
        }
        return res
    }
    arr.unique1() // [1, 2, 3, 4, 5]
    arr.unique2() // [1, 2, 3, 4, 5]
    arr.unique3() // [1, 2, 3, 4, 5]
    

    ---end---

    相关文章

      网友评论

        本文标题:使用Set进行数组去重

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