时间:2021-05-26
废话不多说,直接拿干货!
先说说这个实例的要求:写一个方法实现数组的去重。(要求:执行方法,传递一个数组,返回去重后的新数组,原数组不变,实现过程中只能用一层循环,双层嵌套循环也可写,只做参考);
先给初学者解释一下什么叫数组去重(老鸟跳过):意思就是讲数组里面重复的元素去掉,比如说var arr = [3,2,4,2,1,2]; 数组去重得到的新数组是 [3,2,4,1],就是这么一个功能。
实现方法比较简单,实现的方式也比较多,很多大牛也写过相关的文章,之所以写这边博客,旨在一是备忘,二是给初学者能更好的理解其实现的原理,好,我们看第一种实现方式:
第一种,通过遍历新数组来去重
如果大家不习惯这个写法,可以改成下面的写法,效果是一样的:
var arr = [1,'b','b',4,3,3,4,5,1];function unique1(arr){ var arr1 = []; for(var i=0;i<arr.length;i++){ if(arr1.indexOf(arr[i]) == -1){//判断目标数组中在原数组里是否存在 arr1.push(arr[i]); } } return arr1; } console.log(arr); //[1,'b','b',4,3,3,4,5,1] console.log(unique1(arr)); //[1, "b", 4, 3, 5]下面的方法我就不改写法了,你们可以按照上面的格式来改写一下,结果我也不输出了,因为结果是一样的,注释写在代码中,慢慢体会一下
第二种,通过hash表(这个概念有点大,具体原理就不在这里细说了,有时间我会单独写一遍,这是好东西)实现
var arr = [1,'b','b',4,3,3,4,5,1];Array.prototype.unique2 = function(){ var hash = {}; //定义一个hash表 var arr1 = []; //定义一个新数组 for(var i=0;i<this.length;i++){ if(! hash[this[i]]){ hash[this[i]] = true; arr1.push(this[i]); } } return arr1; } console.log(arr); console.log(arr.unique2());
第三种,通过遍历自身的位置是否一致来实现
第四种,这个有点意思,只能运用到特殊场合,就是先跟数组排序,然后22比较,输出一个排序过的新数组
哇哈,打完收工!
要求里面还说,可以使用双层嵌套循环来实现,无法就是用2层for循环,让每一个与原数组去比较
Array.prototype.unique5 = function(){ //双层循环,一一比较 for(var i=0;i<this.length;i++){ //从0开始 for(j= i+1;j<this.length;j++){ //从1开始,逐个比较 if(this[i] === this[j]){ //如果恒定 this.splice(j,1); //就将这个元素删掉 } } } return this; } console.log(arr); console.log(arr.unique5());这种写法的循环次数太多,不推荐,有人会说,第一种和第三种不也是每次都遍历一遍吗?跟第5种感觉也差不多呢?是的,你能这么理解,说明你理解了,但是呢,又不是特别的理解,我们说差不多那可就差太多了,indexOf()表示的是找到第一个匹配的元素就会
停止遍历,而第5种则是不管找不找得到,都会把整个数组遍历一遍,如果数据量大,那你觉得哪个性能要好一点?
特别注意的一点:如果在比较两两之间的值是全等或不等的时候,一定要用恒定(===)和不恒定(!==),因为这会涉及到元素的类型上,如 1与'1'是不恒等的!
上面的可真是干货了,一点水分都没有,只能靠大家自己领悟了!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Javascript数组去重的四种方法四种算法来实现这个目的:第一种方法:Array.prototype.unique1=function(){varn=[];
本文实例讲述了JavaScript基于对象方法实现数组去重及排序操作。分享给大家供大家参考,具体如下://用对象方法实现数组去重Array.prototype.
本文实例讲述了JavaScript使用indexOf()实现数组去重的方法。分享给大家供大家参考,具体如下:数组去重方法有多中,这里列举出自己认为比较容易理解的
javascript数组去重是一个比较常见的需求,解决方法也有很多种,网上都可以找到答案的,下面小编给大家整理了一份关于同类型的数组去重的方法,先给大家介绍下简
本文实例讲述了JavaScript清空数组元素的两种方法简单比较。分享给大家供大家参考。具体分析如下:JavaScript中数组清空有多种方法:vararr=[