利用set实现去重

最近读了一些有关于ES6的文章,觉得真是一个超级大的进步,就是不知道兼容性怎么样,鉴于我还在初学,先写个小例子练手,顺便时刻提醒自己要坚持学下去。未来的趋势肯定是替代es5没跑了。

    var arr=[1,2,1,3,2,4,5,1,3];
    var setArr=new Set(arr);
    var newArr=[];
    setArr.forEach(function(e){
        newArr.push(e);
    });
    console.log(newArr);

set是es6里新提出的一个集合的概念,类似于数组arr,同样不只是数字类型,其他类型的数据如字符串等也是支持的,set有个和数组不同的特性就是重复的元素加入集合中是无效的,因此一个数组,利用set.add来加入到这个集合中来就自动实现了去重的步骤。

以下是Set支持的所有操作:

  • new Set:创建一个新的、空的Set
  • new Set(iterable):从任何可遍历数据中提取元素,构造出一个新的集合。
  • set.size:获取集合的大小,即其中元素的个数。
  • set.has(value):判定集合中是否含有指定元素,返回一个布尔值。
  • set.add(value):添加元素。如果与已有重复,则不产生效果。
  • set.delete(value):删除元素。如果并不存在,则不产生效果。.add().delete()都会返回集合自身,所以我们可以用链式语法。
  • set[Symbol.iterator]():返回一个新的遍历整个集合的迭代器。一般这个方法不会被直接调用,因为实际上就是它使集合能够被遍历,也就是说,我们可以直接写for (v of set) {...}等等。
  • set.forEach(f):直接用代码来解释好了,它就像是for (let value of set) { f(value, value, set); }的简写,类似于数组的.forEach()方法。
  • set.clear():清空集合。
  • set.keys()set.values()set.entries()返回各种迭代器,它们是为了兼容Map而提供的
时间: 2024-12-29 07:40:00

利用set实现去重的相关文章

mysql利用唯一索引去重

在生产环境中,有时候我们会遇到这样的问题,就是去掉数据库中2列值相同的数据,并且留下一条语句,解决这个问题可以利用唯一联合索引 创建测试表 CREATE TABLE `test03` (`id` INT(11) ,`uid` INT(11) DEFAULT NULL); INSERT INTO test03(id,uid) VALUES (1,1),(1,2),(1,1),(1,2),(1,1); select * from test03; id    uid 1    1 1    2 1  

Java递归实现全排列改进(二)---利用ArrayList实现去重

import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Test{ private static String[] s = new String[]{"a","b","a"}; private static int l = s.length; private static List<String> list = n

Java递归实现全排列改进(一)---利用HashSet实现去重

import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; public class Test{ private static String[] s = new String[]{"a","b","a"};

ES6 利用 Set 数组去重法

例子: const set = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => set.add(x) ); const arr = [...set]; console.log(arr); // [ 2, 3, 5, 4 ] 稍做一下解释: 因为,ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. 所以,可以做出这样的方法: 原文地址:https://www.cnblogs.com/cnblogs-jcy/p/850

几个小编程题(数组去重,获取字符串中最多字符)

1.编写一个方法去掉一个数组的重复元素: 方法一:普通for循环嵌套: 1 function removeSame(arr){ 2 console.log(arr); 3 for(var i=0, len = arr.length; i<len; i++){ 4 for(var j=i+1; j<len-i; j++){ 5 if(arr[i] === arr[j]){ 6 arr.splice(arr[j], 1); //如果检测到有重复的元素则删除 7 j--; //当有多个重复元素时向前

PHP数组去重..............过滤字段

1 $test_data = M('hot'); //实例化数据表 2 $data = $test_data->Distinct(true)->field('descriprion')->order('description desc')->select(); //利用distinct方法去重 3 $data = $test_data->group('department')->order('description desc')->select(); //利用gr

邻接链表线性时间去重 C代码 算法导论 22.1-4

这里利用直接寻址法去重,遍历链表,如果对应数组位置值为0,则修正为1,如果对应数组为1,则删除该节点.(数组初始化为0) 链表的一些操作都简单的实现了一下. #include <stdio.h> #include <stdlib.h> #include <malloc.h> struct Node{ int key; Node *next; }; struct List{ Node *head; }; typedef struct Node Node; typedef

交通银行太平洋信用卡中心的面试题:数组怎么去重?

7种方法实现数组去重 前言 去重是开发中经常会碰到的一个热点问题,不过目前项目中碰到的情况都是后台接口使用SQL去重,简单高效,基本不会让前端处理去重. 那么前端处理去重会出现什么情况呢?假如每页显示10条不同的数据,如果数据重复比较严重,那么要显示10条数据,可能需要发送多个http请求才能够筛选出10条不同的数据,而如果在后台就去重了的话,只需一次http请求就能够获取到10条不同的数据. 当然,这并不是说前端去重就没有必要了,依然需要会熟练使用.本文主要介绍几种常见的数组去重的方法. 方法

火眼金睛算法,教你海量短文本场景下去重

本文由QQ大数据发表 最朴素的做法 在大多数情况下,大量的重复文本一般不会是什么好事情,比如互相抄袭的新闻,群发的垃圾短信,铺天盖地的广告文案等,这些都会造成网络内容的同质化并加重数据库的存储负担,更糟糕的是降低了文本内容的质量.因此需要一种准确而高效率的文本去重算法.而最朴素的做法就是将所有文本进行两两比较,简单易理解,最符合人类的直觉,对于少量文本来说,实现起来也很方便,但是对于海量文本来说,这明显是行不通的,因为它的时间复杂度是,针对亿级别的文本去重时,时间消耗可能就要以年为单位,此路不通