面试前端必须准备的一个问题:怎样去掉Javascript的Array的重复项。据我所知,百度、腾讯、盛大等都在面试里出过这个题目。 这个问题看起来简单,但是其实暗藏杀机。 考的不仅仅是实现这个功能,更能看出你对计算机程序执行的深入理解。 我总共想出了三种算法来实现这个目的:Array.prototype.unique1 = function() {var n = []; //一个新的临时数组for(var i = 0; i < this.length; i++) //遍历当前数组{//如果当前数组的第i已...
javascript数组去重方法一:Array类型并没有提供去重复的方法,如果要把数组的重复元素干掉,那得自己想办法:方法一:利用indexOf方法; var aa=[1,3,5,4,3,3,1,4] function arr(arr) {var result=[]for(var i=0; i javascript数组去重方法二: function unique(arr) {var result = [], isRepeated;for (var i = 0, len = arr.length; i 方法二,总体思路是把数组元素逐个搬运到另一个数组,搬运的过程中检查这个元素是否有重复,...
前言 最近为了换工作,准备下面试,开始回顾复习JavaScript相关的知识,昨天下午想到了数组去重的相关方法,干脆整理出几篇JavaScript算法文章,以备后用,此系列文章不定篇数,不定时间,想到哪写到哪,不保证正确性,不保证高效率,只是谈谈个人理解,如有错误,请诸位斧正。 关于去重 数组去重是一个比较常见的算法考察点,实现去重的方式无外乎通过唯一性和非唯一性。简单来讲就是挑出唯一的或者删除不唯一的。以下所有算法都是...
废话不多说,直接拿干货! 先说说这个实例的要求:写一个方法实现数组的去重。(要求:执行方法,传递一个数组,返回去重后的新数组,原数组不变,实现过程中只能用一层循环,双层嵌套循环也可写,只做参考); 先给初学者解释一下什么叫数组去重(老鸟跳过):意思就是讲数组里面重复的元素去掉,比如说var arr = [3,2,4,2,1,2]; 数组去重得到的新数组是 [3,2,4,1],就是这么一个功能。 实现方法比较简单,实现的方式也比较多,很...
推荐阅读:JavaScript学习笔记之数组的增、删、改、查 JavaScript学习笔记之数组求和方法 JavaScript学习笔记之数组随机排序 话说面试常会碰到面试官会问JavaScript实现数组去重的问题,最近刚好在学习有关于JavaScript数组相关的知识,趁此机会整理了一些有关于JavaScript数组去重的方法。 下面这些数组去重的方法是自己收集和整理的,如有不对希望指正文中不对之处。 双重循环去重 这个方法使用了两个for循环做遍历。整个思路是:...
1、数组去重; Array类型并没有提供去重复的方法,如果要把数组的重复元素干掉,那得自己想办法: 方法一:利用indexOf方法;var aa=[1,3,5,4,3,3,1,4] function arr(arr) {var result=[]for(var i=0; i方法二:function unique(arr) {var result = [], isRepeated;for (var i = 0, len = arr.length; i 方法二,总体思路是把数组元素逐个搬运到另一个数组,搬运的过程中检查这个元素是否有重复,如果有就直接丢掉。从嵌套循环就可...
test.htm 代码如下: array-remove-repeate .tt{ background-color:#006699; height:3px; overflow:hidden;} if(!console) { var console={}; console.log=function(str){alert(str);} } Array.prototype.unique1 = function () { var r = new Array(); label:for(var i = 0, n = this.length; i for(var x = 0, y = r.length; x if(r[x] == this[i]) { continue label; } } r[r.length] = this[i]; } return r; } Array....
昨天参加的一个前端面试,其中有一题数组去重,首先想到的是对象存键值的方法,代码如下 方法一:(简单存键值) 代码如下: Array.prototype.distinct1 = function() { var i=0,tmp={},that=this.slice(0) this.length=0; for(;i<that.length;i++){ if(!(that[i] in tmp)){ this[this.length]=that[i]; tmp[that[i]]=true; } } return this; }; 上面的方法不复杂,思路也简单,可是遇到不同类型又能转换成同样的字符串的就完了,...
第一种是比较常规的方法 思路: 1.构建一个新的数组存放结果 2.for循环中每次从原数组中取出一个元素,用indexOf查找新数组中是否有该元素 3.若没有,则存到结果数组中 代码如下: Array.prototype.unique1 = function(){ var res = []; for(var i = 0; i < this.length; i++){ if(res.indexOf(this[i]) == -1){ res.push(this[i]); } } return res; } var arr = [1, a, a, b, d, e, e, 1, 0] alert(arr.unique1()) 此基础上可以略...
js去重复id String.prototype.repeatOpt = function () { var str = this + "",objStr = ""; for (var i = 0; i [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]我经常用的代码: js去除重复id function $Obj(objname){ return document.getElementById(objname); } //供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } //去掉左边的空白 function trimLeft(s){ if(s == null) { return ""; } var ...
代码如下: /** * each是一个集合迭代函数,它接受一个函数作为参数和一组可选的参数 * 这个迭代函数依次将集合的每一个元素和可选参数用函数进行计算,并将计算得的结果集返回 {%example var a = [1,2,3,4].each(function(x){return x > 2 ? x : null}); var b = [1,2,3,4].each(function(x){return x alert(a); alert(b); %} * @param {Function} fn 进行迭代判定的函数 * @param more ... 零个或多个可选的用户自定义参数 * @r...
其实在js中实现数组排序,采用数组中sort方法实现还是比较简单的: 一、排序 简单实现数组排序 代码如下:var arr = []; for(var i=0;i<20;i++){ arr.push(Math.floor(Math.random()*100)) } arr.sort(function(a,b){ return a>b?1:-1; }) alert(arr)不能简单使用sort方法,默认情况下 sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序, sort() 方法可以接受一个 方法为参数 ,这个方法有两个参数。...
代码如下: /* *数组元素去重 */ if(typeof Array.prototype.distinct != "function"){ Array.prototype.distinct = function(){ this.sort(); for(var i=0;i<this.length-1;i++){ if($.isPlainObject(this[i]) && $.isPlainObject(this[i+1])){ if(o2o(this[i],this[i+1])){ this.splice(i,1); } }else if($.isArray(this[i]) && $.isArray(this[i+1])){ if(a2a(this[i],this[i+1])){ this.splice(i,1); } }else if(this[i]===this...
第一种: 代码如下:function unique (arr){ var obj = {},newArr = []; for(var i = 0;i < arr.length;i++){ var value = arr[i]; if(!obj[value]){ obj[value] = 1; newArr.push(value); } } return newArr;}这个方法把数组的值存入对象,所以,在数组存在对象队员的时候,运行失败(对象作为对象的键会被转化为字符串)。第二种方法: 代码如下:function unique (arr){ for(var i = 0;i < arr.length;i+...
方法一:去重复数据 代码如下:Array.prototype.distinct=function(){var a=[],b=[];for(var prop in this){ var d = this[prop]; if (d===a[prop]) continue; //防止循环到prototype if (b[d]!=1){ a.push(d); b[d]=1; }}return a;}var x=['a','b','c','d','b','a','e','a','b','c','d','b','a','e'];document.write('原始数组:'+x);document.write("");document.write('去重复后:'+x.distinct());方法二:取重复数据...