数组去重(ES5、ES6)】的更多相关文章

思路:把去重后的数组放到一个空数组中 ES5实现: function uni(arr) { var result = []; for (var i=0;i<arr.length;i++) { if(result.indexOf(arr[i])==-1) { result.push(arr[i]); } } return result; } var obj = new uni([1,1,1,1,3,4,5]); console.log(obj); ES6实现: function removal(a…
ES6中新增了Set数据结构,类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数,如: let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3]; let set = new Set(array); console.log(set); // => Set {1, 2, 3, 4, 5} ES6中Array新增了一个静态方法Array.from,可以把类似数组的对象转换为数组,如通过querySelectAll方法得到HTML DOM Node…
对象赋值思想:(接收后台数据绘制统计图用到了该想法) // ES5 /** * 数组.字符串去重 * @param {[string/array]} [数组] * @return {[array]} [返回数组] */ Array.prototype.unique = function () { var obj = {}; for (var i = 0; i < this.length; i++) { obj[this[i]] = this[i]; } var newArr = []; for…
let arrayBefore = [1,3,3,2,1,5,2,1]; //去重之前的数组 Array.prototype.dedupe = function (){ //去重函数 返回去重后的数组 let temp = new Set(this); temp = Array.from(temp); //转为 Array类 return temp; }; arrayBefore.dedupe(); // [ 1, 3, 2, 5 ] 参考文献: 阮一峰ECMASript6入门. 电子工业出版社…
ES6,ES5数组去重 使用Es6进行数组去重 var arr = [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN]; var set = new Set(arr); var uniqArr = Array.from(set) 因为NaN == NaN会返回,false,Es6不用区分这一点 使用Es5进行数组去重 Array.prototype.uniq = function() { var arr = []; v…
1.运用数组的特性 1.遍历数组,也遍历辅助数组,找出两个数组中是否有相同的项,若有则break,没有的话就push进去. //第一版本数组去重 function unique(arr){ var res = [], len = arr.length; for(let i = 0;i < len; i++){ var reslen = res.length; for(let j = 0;j < reslen; j++){ //遍历辅助数组 if(arr[i] === res[j]){ brea…
ES6中新增了Set数据结构,类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数,如: let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3]; let set = new Set(array); console.log(set); // => Set {1, 2, 3, 4, 5} ES6中Array新增了一个静态方法Array.from,可以把类似数组的对象转换为数组,如通过querySelectAll方法得到HTML DOM Node…
今天五一,在出去玩之前赶紧写篇博客,时刻不要忘记学习^_^!! 提到数组去重,想必大家都不陌生,会的同学可能噼里啪啦写出好几个,下面来看看之前常见的去重代码: 'use strict'; var arr = [1,'a',undefined,null,NaN,1,'a',undefined,null,NaN]; Array.prototype.remDub = Array.prototype.remDub || function(){ this.sort(); var arr = [this[0…
数组去重方法1:用es6的set和...扩展运算符 let arr = [1,2,3,4,4,5,2]; console.log([...new Set(arr)]) // [1, 2, 3, 4, 5] ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); for (l…
说明 JavaScript数组去重这个问题,经常出现在面试题中,以前也写过一篇数组去重的文章,(JavaScript 数组去重的多种方法原理详解)但感觉代码还是有点不够简单,今天和大家再说两种方法,代码可是足够的少了. 解释 方法一: function unique(arr) { const res = new Map(); return arr.filter((a) => !res.has(a) && res.set(a, 1)) } 就这么短,就可以了,我们来解释一下为什么. M…
较常见的一问题:数组去重. 方法一:利用hash数组的原理 var arr=[1,3,3,4,5,5,6,6,7,8,69,8,99,9,0,]; function unique(arry){ var newArry=[]; for(let i=0;i<arr.length;i++){ if(!newArry[arr[i]]){ newArry[arr[i]]=arr[i]; } } return newArry; } console.log(unique(arr)); 方法二:indexOf方…
一.Set 1.定义 Set对象是ES6中新定义的数据结构,类似于数组,它允许你存储任何类型的唯一值,不管是原始值还是对象引用. 2.语法 new Set([iterable]) iterable:可迭代对象,默认为空. Set方法 add:添加值,返回Set本身. delete:删除值,返回是否删除成功. has:判断是否拥有这个值,返回true/false. clear:清除所有值. 3.示例 let s = new Set(); s.add(4); s.add(1); s.add(3);…
ES6里新添加了两个很好用的东西,set和Array.from. set是一种新的数据结构,它可以接收一个数组或者是类数组对象,自动去重其中的重复项目. 在这我们可以看见,重复的项目已经被去掉了,包括NaN.正常情况下,NaN === NaN 返回的是false,但是在set里,一样能够帮你去重,厉害了. 但是这里大家可以看到,set返回的是一个对象,但是我们想要的是数组啊. 这回,就该轮到Array.from出场了,它的作用,就是可以把类数组对象.可迭代对象转化为数组. 这回我们再看,已经变成…
并集: const arr1 = [1, 2, 3, 2, 5]; const arr2 = [1, 4, 6, 8, 3]; // 将两个数组合并 const concatArr = [...arr1, ...arr2]; // 对数组去重 const set = new Set(concatArr); const newArr = [...set] 交集: const arr1 = [1, 2, 3, 2, 5]; const arr2 = [1, 4, 6, 8, 3]; const se…
一种新的数据类型,它是对象的一种,Set,很像数组,又不是数组. Set 类型 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用. 如果里面有重复的会自动去重.set可以理解为去重之后的数组,永远不允许有重复的元素存在. 无论是原始值还是对象引用 如果有重复的字符串,也会去重. null和undefined也会…
原文链接:https://juejin.im/post/5b17a2c251882513e9059231 1,去除简单类型   //ES6中新增了Set数据结构,类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数,如:   let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3];   let set = new Set(array);   console.log(set);   // => Set {1, 2, 3, 4, 5}      …
自从有了es6的set数据结构,数组的去重可以简单用一行代码实现,比如下面的方式 let arr = [1, 2, 2, 3, 4] function unique (arr) { return [...new Set(arr)] } console.log(unique(arr)) // [1, 2, 3, 4] 但是当数组的项不再是简单的数据类型时,比如是对象时,这种方法就会导致错误,比如下面的结果 let arr = [ { name: 'a', num: 1}, { name: 'b',…
//数组去重 function distinct(arr) { let result = []; let obj = {}; for(let i of arr) { if(!obj[i]) { result.push(i); obj[i] = 1; } } return result }…
使用new Set()快速数组去重: let arr = [1, 2, 2, 3, 4, 5, 5, 5, 6] let set = new Set([...arr]) console.log([...set]) //[1, 2, 3, 4, 5, 6] function SetArr(array) { return Array.from(new Set(array)); } console.log(SetArr([1, 1, 2, 2, 3, 4, 4])) // [1, 2, 3,4]…
使用new Set实现数组去重必须结合for of, 如果使用for循环就实现不了 var arr = new Set([1, 2, 1, 1, 2, 3, 3, 4, 4]); for (var el of arr) { console.log(el) }…
Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对话,你会学到很多.为什么是 underscore?最主要的原因是 underscore 简短精悍(约 1.5k 行),封装了 100 多个有用的方法,耦合度低,非常适合逐个方法阅读,适合楼主这样的 JavaScript 初学者.从中,你不仅可以学到用…
数组去重经常被人拿来说事,虽然在工作中不常用,但他能够很好的考察js基础知识掌握的深度和广度,下面从js的不同阶段总结一下去重的方法. ES3阶段 该阶段主要通过循环遍历数组从而达到去重的目的 多次循环去掉重复元素 // 以下所有方法默认都那拿该数组进行测试 var array = [1, 1, '1', '1', null, null, undefined, undefined, new String('1'), new String('1'), /a/, /a/, NaN, NaN,{},{…
「数组去重」的确是个老生常谈的问题了,但是你真正的掌握了吗?平时开发中是不是用最简单粗暴的方法来去重?注意到它的性能问题了吗?当面试官对你回答的四个去重方法都不满意时你可以想出更简单且性能能更好的方法吗? 下面介绍几种常用的方法,从简单到更简单,从性能差到性能好,开始! 1. for循环(两次) + 新数组 let arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0, 2, 2, 3];function unique(arr){ let newArr = […
1.遍历数组法: 这应该是最简单的去重方法(实现思路:新建一新数组,遍历数组,值不在新数组就加入该新数组中) // 遍历数组去重法 function unique(arr){ var _arr = [] //遍历当前数组 for(var i = 0; i < arr.length; i++){ //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (_arr.indexOf(arr[i]) == -1) _arr.push(arr[i]) } re…
前言 数组去重方法老生常谈,既然是常谈,我也来谈谈 双层循环 也许我们首先想到的是使用 indexOf 来循环判断一遍,但在这个方法之前,让我们先看看最原始的方法: var array = [1,1,'1','1']; function unique(array) { var res = []; for(var i = 0, arrayLen = array.length; i < arrayLen; i++) { for(var j = 0, resLen = res.length; j <…
数组去重的方法 一.利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}]; console.log(unique(arr))  //[1,…
数组去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码.如果是被提问到,数组去重的方法有哪些?你能答出其中的10种,面试官很有可能对你刮目相看.在真实的项目中碰到的数组去重,一般都是后台去处理,很少让前端处理数组去重.虽然日常项目用到的概率比较低,但还是需要了解一下,以防面试的时候可能回被问到. 注:写的匆忙,加上这几天有点忙,还没有非常认真核对过,不过思路是没有问题,可能一些小细节出错而已. 数组去重的方法 一.利用ES6 Set去重(ES6中最常用) function un…
数组去重是最常见的面试题,现在总结一下我所知道的几种 首先第一个就是es5 最常见的循环比较 var array= [1, 1, 2]; function test(nums) { for (var i = 0; i < nums.length; i++) { for (var j = i + 1; j < nums.length; j++) { if (nums[i] === nums[j]) { nums.splice(j, 1); j--; } } } console.log(nums)…
ES6中新增了Set数据结构,类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数,如: let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3]; let set = new Set(array); console.log(set); // => Set {1, 2, 3, 4, 5} ES6中Array新增了一个静态方法Array.from,可以把类似数组的对象转换为数组,如通过querySelectAll方法得到HTML DOM Node…
目录 1 测试用例 2 JS 数组去重4大类型 2.1 元素比较型 2.1.1 双层 for 循环逐一比较(es5常用) 2.1.2 排序相邻比较 2.2 查找元素位置型 2.2.1 indexOf 2.2.2 findIndex 2.3 元素是否存在型 2.3.1 includes 2.3.2 some 2.4 依托数据结构特性 2.4.1 Map 2.4.2 Set(ES6 最常用) 3 补充 1 测试用例 // 测试用例 const a = {}; const b = { c: 1 };…