用最简洁的实现数组去重

【解析】

Set

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

Set 本身是一个构造函数,用来生成 Set 数据结构。

向Set加入值的时候,不会发生类型转换,所以5"5"是两个不同的值。Set内部判断两个值是否不同,使用的算法叫做“Same-value equality”,它类似于精确相等运算符(===),主要的区别是NaN等于自身,而精确相等运算符认为NaN不等于自身。

Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。

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

参考:http://es6.ruanyifeng.com/#docs/set-map

filter()

array.filter(function(currentValue,index,arr), thisValue)

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

注: filter() 不会对空数组进行检测, 不会改变原始数组。

thisValue可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
如果省略了 thisValue ,"this" 的值为 "undefined"

参考:http://www.runoob.com/jsref/jsref-filter.html

时间: 2024-08-09 06:34:31

用最简洁的实现数组去重的相关文章

JavaScript 数组去重

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

js数组去重算法

来来来 ,整理完数组排序 ,咱们再来看看数组去重 .这个可以说有很多方式了 .之前看过的算法方式太多 ,导致思路其实有时候真的很受限,不过也是整理来学习用的 ,如有雷同 ,纯属巧合啊 ,小婊贝们~ 首先呢 ,我们来看看思路比较直接的方法,基本思路就是声明一个新数组arr_n,将[0]这个成员压入arr;然后从[1]开始循环当前数组,设置一个变量a,给他一个初始值1:内层嵌套从[0]对arr_n数组的循环 ,用外层对当前数组循环的当前项this[i]和arr_n的每一项arr_n[j]进行对比,如

JavaScript之数组去重

前言:昨天看到了别人发的帖子,谈到了面试题中经常出现的数组去重的问题.作为一个热爱学习.喜欢听老师话的好孩纸,耳边忽然想起来高中老师的谆谆教导:不要拿到题就先看答案,要先自己思考解答,然后再对照答案检验.于是我便开始了独立思考的过程: 首先,我想到的是另建一个结果数组,用来存储原始数组中不重复的数据.遍历原始数组依次跟结果数组中的元素进行比较,检测是否重复.于是乎,我写出了如下代码A: 1 Array.prototype.clearRepetitionA = function(){ 2 var

使用js里面的迭代器filter实现数组去重

实现数组去重的方法很多,最原始的方法是一个值一个值的去遍历,写到空数组里面: let r=[],arr = ['a', 'b', 'c', 'a']; for(var i=0,len=arr.length;i<len;i++){ if(r.indexOf(arr[i])===-1){ r.push(arr[i]); } } 或者是在es6里面的.map方法, 但是今天要讲的是迭代器filter,用习惯了迭代器,你可以发现它真的可以取代for循环干许多的事情,而且代码简洁, filter的定义:

数组去重(只讲两种方法)

数组去重的方法有很多,每个人都有自己喜欢用的方法,这里说两种我自己觉得比较简洁高效的方法,当然很多人都知道这些. 方法一 Array.prototype.unique = function(){ var obj = {}; var arr = []; var len = this.length; for(var i=0;i<len;i++){ if(!obj[this[i]]){ obj[this[i]] = 'a'; arr.push(this[i]); } } return arr; } 此

JS数组专题2?? ? 数组去重

距离上次发文,已经有一段时间了,最近工作比较忙,这不眼看快双十一了,就相当于给大家一些福利吧! 一.什么是数组去重 简单说就是把数组中重复的项删除掉,你 GET 到了吗 ?下面我将简单介绍下几种基本的方法及其优缺点. 二.方法汇总 两层循环 ** 无相同值直接 push 进新数组,有相同的值则直接跳过本次内部循环 ** /* * @param {Array} arr -要去重的数组 * @param {Array} result -初始化结果数组 */ const unique = (arr,

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.