美文网首页大话前端让前端飞程序员
去除数组重复元素(Array.from+Set)

去除数组重复元素(Array.from+Set)

作者: fenerchen | 来源:发表于2018-03-05 21:13 被阅读43次

Set

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

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

// 例三
function divs () {
  return [...document.querySelectorAll('div')];
}

const set = new Set(divs());
set.size // 56

// 类似于
divs().forEach(div => set.add(div));
set.size // 56

Array.from()

Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。

下面是一个类似数组的对象,Array.from将它转为真正的数组。

let arrayLike = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length: 3
};

// ES5的写法
var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c']

// ES6的写法
let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
Array.from('hello')
// ['h', 'e', 'l', 'l', 'o']

let namesSet = new Set(['a', 'b'])
Array.from(namesSet) // ['a', 'b']

值得提醒的是,扩展运算符(...)也可以将某些数据结构转为数组。

[...new Set(array)]

去除数组重复元素

[...new Set(array)]
Array.from(new Set(array));
非es6去重

1、时间复杂度o(n)

function fn(arr) {
        let obj = {};
        arr.forEach((item) => {
            obj[item] = '';//只保存最后出现的键为准,从而去重
        })
        return Object.keys(obj)
    }

2、时间复杂度o(n*n)

function fn(arr) {
           return arr.filter((item, index, arr) =>arr.indexOf(item) === index)     //第一次出现的的元素下标才等于下标
       }

相关文章

  • iOS 从数组随机取元素

    数组随机取元素 — 不考虑重复情况 数组随机取元素 — 去除重复元素

  • 去除数组重复元素(Array.from+Set)

    Set ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一...

  • 去除数组重复元素(Array.from+Set)

    Set ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一...

  • 数组

    1. 去除数组中的重复元素 题目 已知一个已经排序的数组,去除数组中的重复元素,返回数组的长度。 思路 使用双指针...

  • 数组去重

    请看下面数组,其中的元素有多次重复,请写一个函数来实现去除数组中重复的元素。 使用with改进 对象去除法 通过正...

  • js手写数组去重

    javascript数组中若存在重复元素,此时我们需要将重复的元素去除,下面我讲介绍一下几种方法进行数组元素去重 ...

  • 去除已排序数组中的重复元素

    题目描述 给定一个已排序的数组,去除数组中的重复元素,只保留一个重复的元素,并且返回新的数组长度。 要求 不要给数...

  • 2018-01-18

    数组去重 去除数组中重复的元素的原理:查看该元素在当前数组中是否存在,若存在,则跳过该元素,对其不做任何处理;若不...

  • 2018-02-06

    1、去除数组中重复元素 ```` let arr=['a','b','c','d','a','e','b'] le...

  • 去除数组重复元素

    var arr = [1,2,2,3,5,4,8,6,4,2,47,5,9,3,20,3]; //将数组转为对象,...

网友评论

    本文标题:去除数组重复元素(Array.from+Set)

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