Set以及数组去重

特点

  • Set本身是一个构造函数,用来生成Set数据结构
  • Set 类似于数组,里面的成员都是==唯一==的,没有重复的值,通过add方法向Set结构加入成员
  • 向Set加入值的时候,不会发生类型转换,Set内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”,类似于===,主要的区别是NaN等于自身,而===认为NaN不等于自身。
  • 在Set内部,两个NaN是==相等==的
  • 两个对象总是==不相等==的

Set实例的属性和方法

1. 属性

  • Set.prototype.constructor
  • Set.prototype.size

2. 方法

  • add(value):添加某个值,返回Set结构本身
  • delete(value):删除某个值,返回一个布尔值,表示删除是否成功
  • has(value):返回一个布尔值,表示该值是否是Set的成员
  • clear():清除所有成员,没有返回值

遍历操作

遍历操作(Set的遍历顺序就是插入顺序),由于Set结构没有键名,只有键值,所以keys方法和values方法的行为完全一致

  • keys():返回键名的遍历器
  • values():返回键值的遍历器
  • entries():返回键值对的遍历器
  • forEach():使用回调函数遍历每个成员

Set结构的默认遍历器是values方法

数组去重

利用Set的特性(Set成员唯一性)可以简单实现数组去重

1. Array.from与Set结合去重

Array.from方法可以将Set结构转为数组

function dedupe(array) {
    return Array.from(new Set(array));
}
console.log(dedupe([1, 1, 2, 3])); // 输出[ 1, 2, 3 ]

2. 扩展运算符(...)与Set结合去重

扩展运算符与Set结构相结合,可以去除数组的重复成员

function dedupe(array) {
    return [...(new Set(array))];
}
console.log(dedupe([1, 1, 2, 3])); // 输出[ 1, 2, 3 ]

原文地址:https://www.cnblogs.com/let423/p/11974185.html

时间: 2024-10-09 21:37:14

Set以及数组去重的相关文章

javaScript数组去重方法

在JAvascript平时项目开发中经常会用到数组去重的操作.这时候就要用到JS数组去重的方法了. demo1: 第一种:JS数组去重操作方法是利用遍历原数组,利用数组的indexOf()方法来来判断新数组b中是否有原数组a中的元素,如果没有的话则在b数组的后面追加上a[i],如果有的话就不执行任何操作,最后可以达到数组去重的操作. 这种方法应该是平时开发中最常用的JS数组去重的方法了,简单又实用. demo2: 第二种去重的方法比较巧妙,是定义一个空对象和一个空数组,在遍历原数组的时候来用原数

json数组去重

// json数组去重 function getJsonArr(arr) { //定义需要的空数组 var newArr = []; //定义转换字符串后的数组 var newStringArr = []; $.each(arr, function (i, v) { var sArr = JSON.stringify(v); if ($.inArray(sArr, newStringArr) == -1) { // 根据字符串数组push对象 newStringArr.push(sArr); n

【学】数组去重的3种方式

数组去重的3种方式 var arr = [1,4,2,3,4,5,6,7,3,4,5,23,2,3,4,5,3,2,3,4,5];   function findInArray(n,arr){ for (var i=0; i<arr.length; i++) { if(arr[i]==n){ return true; } } return false; }   function removeRep1(arr){ //方法2 var arr1 = []; for (var i=0; i<arr.

JavaScript 数组去重

JavaScript 数组去重 Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对话,你会学到很多.为什么是 underscore?最主要的原因是 underscore 简短精悍(约 1.5k 行),封装了 100 多个有用的方法,耦合度低,非常适合逐个方法阅读,适合楼主这样的 JavaScript

TP框架数组去重后分页

$view = D('HistoryTest')     ->alias("as a")     ->join("qxy_test as b on a.object = b.id")     ->field("b.title,b.id,a.uid")     ->order('a.id desc')     ->where("a.title like '%".$key."%'"

数组去重方法总结

这几天正在整理面试题,顺便把以前学的东西给总结一下,数组去重,我猜面试应该考的几率还是蛮高的,所以下面就让博主给讲讲iOS数组去重的几种方法. 第一种:冒泡排序,然后挨个挨个比较,这个没什么可说的,关键是麻烦,而且时间复杂度也挺大的,所以博主就不给讲了. 第二种:利用数组排序. NSArray *array = @[@"小玉",@"小小鱼",@"小玉"]; //数组去重方法---方法1 //建立一个新的的可变数组,数组长度为0 NSMutable

js中数组去重的几种方法

js中数组去重的几种方法         1.遍历数组,一一比较,比较到相同的就删除后面的                 function unique(arr){                         for(var i=0;i<arr.length;i++){                                 for(var j=i+1;j<arr.length;j++){                                         if(ar

javascript数组去重算法-----4(另一种写法)

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>javascript数组去重算法-----3</title> 6 </head> 7 <body> 8 <script> 9 var arr = [1,1,2,2,3,2,2,3,3,1,1,4,4,5

javascript数组去重的三种常用方法,及其性能比较

在进行数组操作时往往会遇到去掉重复项的问题,下面简单介绍下数组去重的方法,以及其执行效率 方法一        采用两次循环        原理:拿当前的和他后面的比,如果后面的有重复的就干掉        但是我们发现数组最后一项,后面没有东西,那他就不用和后边的比较了,所以我们只要循环arr.length-1次就可以了 1 var arr=[1,3,5,3,5]; 2 3 var len=arr.length; 4 for(var i=0;i<len-1;i++){ 5 var curIte

冒泡排序、数组去重

数组去重:第一种splice方法:function quchong() { for (var i = 0; i <= elements.length; i++) { for (var j = i + 1; j < elements.length; j++) { if (elements[j] == elements[i]) { elements.splice(j, 1); j -= 1; //这里应该把 j 减 1 } } } } var elements = [2, 2, 5, 3, 6,