Javascript实现数组去重 [转]】的更多相关文章

JavaScript 实现数组去重 演示Demo 数组去重 // 方法一 function unique1(a) { var res = []; for (var i = 0, len = a.length; i < len; i++) { for (var j = i + 1; j < len; j++) { // 这一步十分巧妙 // 如果发现相同元素 // 则 i 自增进入下一个循环比较 if (a[i] === a[j]) j = ++i; } res.push(a[i]); } re…
JavaScript中数组去重的几种方法 正常情况下,数据去重的工作一般都是由后端同事来完成的,但是前端也要掌握好处理数据的能力,万一去重的工作交给我们大前端处理,我们也不能怂呀.现在我总结了一些去重的方法,希望对大家有点帮助. 方法一:new Set()实现数组去重 ES6 提供了新的数据结构 Set,它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构.Set函数可以接受一个数组,用于初始化.根据 Set的数据特性,我们可以实现数组去重…
一.利用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, "true&quo…
前言:昨天看到了别人发的帖子,谈到了面试题中经常出现的数组去重的问题.作为一个热爱学习.喜欢听老师话的好孩纸,耳边忽然想起来高中老师的谆谆教导:不要拿到题就先看答案,要先自己思考解答,然后再对照答案检验.于是我便开始了独立思考的过程: 首先,我想到的是另建一个结果数组,用来存储原始数组中不重复的数据.遍历原始数组依次跟结果数组中的元素进行比较,检测是否重复.于是乎,我写出了如下代码A: Array.prototype.clearRepetitionA = function(){ var resu…
最近比较忙,没时间更新博客,等忙完这阵子会整理一篇使用AngularJS构建一个中型的单页面应用(SPA)的文章,尽情期待!先占个坑. 数组去重的算法有很多种,以下是一种. 思路如下: 定义一个空的对象obj: 循环数组arr,判断obj[arr[i]]是否为false,如果是则将该数组元素放到result中,并且将obj[arr[i]]置为true: obj[arr[0]]肯定为false,因为obj为空,arr[0]将被放到result中,并且obj[arr[0]]被置为true: 循环的过…
中午和同事吃饭,席间讨论到数组去重这一问题 我立刻就分享了我常用的一个去重方法,随即被老大指出这个方法效率不高 回家后我自己测试了一下,发现那个方法确实很慢 于是就有了这一次的高性能数组去重研究 一.测试模版 数组去重是一个老生常谈的问题,网上流传着有各种各样的解法 为了测试这些解法的性能,我写了一个测试模版,用来计算数组去重的耗时 // distinct.js let arr1 = Array.), (x, index)=>{ return index }) let arr2 = Array.…
数组去重(要求:原型链上添加函数) <script> //数组去重,要求:在原型链上添加函数 //存储不重复的--仅循环一次 if(!Array.prototype.unique1){ Array.prototype.unique1=function(){ var item , hash={}, len=this.length, result=[]; for(var i = 0 ; i < len ; i++){ item = this[i]; if(!hash[item+Object.…
原文地址:https://www.cnblogs.com/wisewrong/p/9642264.html 一.测试模版 数组去重是一个老生常谈的问题,网上流传着有各种各样的解法 为了测试这些解法的性能,我写了一个测试模版,用来计算数组去重的耗时 // distinct.js let arr1 = Array.from(new Array(100000), (x, index)=>{ return index }) let arr2 = Array.from(new Array(50000),…
1.遍历数组法 它是最简单的数组去重方法(indexOf方法) 实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中: var arr=[2,8,5,0,5,2,6,7,2]; function unique1(arr){ var hash=[]; for (var i = 0; i < arr.length; i++) { if(hash.indexOf(arr[i])==-1){ hash.push(arr[i]); } } return h…
                                方法很巧妙 但是要事先知道对应的name或其他属性名称 主键值只适用于已知数据对象进行调用: var arr1 = [{ name: 'C30' }, { name: 'C35' }, { name: 'C40' }, { name: 'C45' }, { name: 'C50' }, { name: 'C60' }, { name: 'C55'}]; //取到strength设定中的列表 var arr2 = [{ name: '…
面试前端必须准备的一道问题:怎样去掉Javascript的Array的重复项.在最近面试中,百度.腾讯.盛大等都在面试里出过这个题目.这个问题看起来简单,但其实暗藏杀机. 考的不仅仅是实现这个功能,更能看出你对计算机程序执行的深入理解. 我总共想出了三种算法来实现这个目的: 方法一: Array.prototype.unique1 = function() {     var n = []; //一个新的临时数组     for(var i = 0; i < this.length; i++)…
1. 简单的去重方法,利用数组的indexOf下标属性来查询 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ function newArr(nArr) { var arr = []; for(var i = 0; i < nArr.length; i++){ if(arr.indexOf(nArr[i]) === -1){ arr.push(nArr[i]); } } return arr; } 2.  利用双层…
▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 先来建立一个数组 var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN]; ▓▓▓▓▓▓ 第一种 思路:建立一个临时数组,用for循环去依次判断arr中的每个项在临时数组中是否有相同的值,如果没有则将这个值添加到临时数组,如果有相同的值则不添加,最后返回这个临时数组 代码: Array.prototype.removeDuplicate = function(){ v…
在JAvascript平时项目开发中经常会用到数组去重的操作.这时候就要用到JS数组去重的方法了. demo1: 第一种:JS数组去重操作方法是利用遍历原数组,利用数组的indexOf()方法来来判断新数组b中是否有原数组a中的元素,如果没有的话则在b数组的后面追加上a[i],如果有的话就不执行任何操作,最后可以达到数组去重的操作. 这种方法应该是平时开发中最常用的JS数组去重的方法了,简单又实用. demo2: 第二种去重的方法比较巧妙,是定义一个空对象和一个空数组,在遍历原数组的时候来用原数…
相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的下面来一起看看.   前言 在做javascript开发的时候,经常会遇到数组元素重复的问题,而javascript Array又没有直接提供方法解决此问题,还需要自己去实现.这篇文章总结了Javascript中数组各种去重的方法,下面来一起看看. 方法一 利用对象属性不重复的特性 Array.pr…
之前一段时间一直在准备面试, 因而博客太久没更新: 现在基本知识点都复习完毕, 接下来就分享下 面试的一些常见问题: 去正规的互联网公司笔试.面试有很大的概率会碰到 使用javascript实现数组去重 的编码问题:如:魅族笔试题: 本博文就 js 如何实现数组去重整理出5种方法,并附上演示Demo 以及 源码. 1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,…
前言 我们先来看下面的例子,当然来源与网络,地址<删除数组中多个不连续的数组元素的正确姿势> 我们现在将数组中所有的‘ a’ 元素删除: var arr = ['a', 'a', 'b', 'c', 'd', 'a', 'a', 'e', 'g', 'a', 'f'];arr.forEach(function(value, index) {    value === 'a' ? arr.splice(index, 1) : '';})console.log(arr); //["a&q…
之前一段时间一直在准备面试, 因而博客太久没更新: 现在基本知识点都复习完毕, 接下来就分享下 面试的一些常见问题: 去正规的互联网公司笔试.面试有很大的概率会碰到 使用javascript实现数组去重 的编码问题: 如:魅族笔试题: 本博文就 js 如何实现数组去重整理出5种方法,并附上演示Demo 以及 源码.  1.遍历数组法   最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法“indexOf”是ECMAScript5…
Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对话,你会学到很多.为什么是 underscore?最主要的原因是 underscore 简短精悍(约 1.5k 行),封装了 100 多个有用的方法,耦合度低,非常适合逐个方法阅读,适合楼主这样的 JavaScript 初学者.从中,你不仅可以学到用…
数组去重的方法有很多,到底哪种是最理想的,自己不清楚.于是自己测试了下数组去重的效果和性能.测试十万个数据,代码和所耗大概时间如下. 到底采用哪种方法,根据实际情况而定吧. /*方法一: 1,'1' 会被认为是相同的; 所有hash对象,如:{x;1},{y:1}会被认为是相同的 //10ms */ Array.prototype.unique=function(){ var newArr=[],obj={}; for(var i=0,len=this.length;i<len;i++){ if…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>javascript数组去重算法-----3</title> </head> <body> <script> var arr = [1,1,2,2,3,2,2,3,3,1,1,4,4,5,6]; function uniq…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>javascript数组去重算法-----2</title> </head> <body> <script> var arr = [1,1,2,2,3,2,2,3,3,1,1,4,4,5,6]; function uniq…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>javascript数组去重算法-----1</title> </head> <body> <script> var arr = [1,1,2,2,3,2,2,3,3,1,1,4,4,5,6]; function uniq…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>javascript数组去重算法-----3</title> </head> <body> <script> var arr = [1,1,2,2,3,2,2,3,3,1,1,4,4,5,6]; function uniq…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>javascript数组去重算法-----3</title> </head> <body> <script> var arr = [1,1,2,2,3,2,2,3,3,1,1,4,4,5,6]; function uniq…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>javascript数组去重算法-----3</title> </head> <body> <script> var arr = [1,1,2,2,3,2,2,3,3,1,1,4,4,5,6]; function uniq…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>javascript数组去重算法-----3</title> </head> <body> <script> var arr = [1,1,2,2,3,2,2,3,3,1,1,4,4,5,6]; function uniq…
最近看到一些人的去面试web前端,都说碰到过问JavaScript数组去重的问题,我也学习了一下做下总结. 实际上最有代表性也就三种方法:数组双重循环,对象哈希,排序后去重. 这三种方法我都做了性能测试,有兴趣的朋友可以去试试,这是测试地址 双重循环最慢(不是一般的慢),对象哈希是最快的,排序后去重根据浏览器不同比对象哈希慢2-3倍(在iphone7的Safari下竟然慢10-12倍) 看来如果数据量不是特别大的时候,还是对象哈希这个方法最靠谱啦.…
在Javascript中,有时我们会用到数组去重.我在这里给大家介绍一下本人认为最简单实用的一种方法-indexOf()去重. var arr = [1,1,1,2,2,2,3,3,4,5,6,2,1]; var arr2 = []; for(var i = 0;i < arr.length;i++){ if(arr2.indexOf(arr[i]) == -1){ arr2.push(arr[i]) } } console.log(arr2) //[1,2,3,4,5,6] 它的原理非常的简单…
随着JavaScript提供语法的增多,数组去重方式也越来越多.现在从最原始的方式到最简洁的方式,一步步进行剖析. 双重循环 数组去重,不就是比较数组元素,去掉重复出现的么.最原始的方式不正是双重循环进行比较处理嘛 创建res数组存放返回结果:外层循环遍历target中的每一个数组元素,内层循环将target中的数组元素与res数组中的每一个值进行对比,如果都不相同,则存放到res中.循环完成,返回去重后的数组.这种原始的方式具有良好的兼容性. indexof优化内层循环 在本栗中使用index…