博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js实现数组去重的三个方法、数组的快速排序
阅读量:6418 次
发布时间:2019-06-23

本文共 2065 字,大约阅读时间需要 6 分钟。

一:数组去重方法1 

(思路:新建一个空的result数组,将需要去重的数组中的第一个元素传入,依次与剩余的元素进行对比,不重复则把元素传入到result数组中。)

Array.prototype.removeDup = function(){                var result = [this[0]]; for(var i = 1 ; i

 

二 : 数组去重方法2 

(思路:将数组排序,新建一个空的result数组,将要去重的数组的第一个元素存入,遍历数组,将数组中的各个元素依次与result元素中的最后一个元素进行对比,如果二者不相等则存入result数组中。这种方法主要依据排序后相同的元素是相邻的。) 
第二个方法虽然比第一种方法高效,但是因为原数组是是排序的,所在输出的result数组也是排序过后的,如果想要的结果是没有变动原数组元素的位置,这个方法就不可取了。

Array.prototype.removeDup2 = function(){                this.sort(); var result = [this[0]]; for(var i = 1; i

 

三 : 数组去重方法3(推荐使用)* 

(思路:新建一个空的result数组,一个空的对象。遍历需要去重的数组,判断对象中是否存在当前遍历的元素作为属性名,没有的话则将该元素存入result数组中,同时为obj对象添加上该属性名。)

Array.prototype.removeDup3 = function(){                var result = []; var obj = {}; for(var i = 0; i < this.length; i++){ if(!obj[this[i]]){ result.push(this[i]); obj[this[i]] = 1; } } return result; } var arr = [1,2,2,5,2,"测试","test","测试","test"]; console.log(arr.removeDup3());

 

 

数组的快速排序 

(思路:判断当传入的数组长度大于1的情况下,获取中间值,新建两个空数组,分别用来存放大于中间值和小于中间值的元素,递归调用,最后返回结果。)

var quickSort = function(arr) {              if (arr.length <= 1) { return arr; }   var pivotIndex = Math.floor(arr.length / 2);   var pivot = arr.splice(pivotIndex, 1)[0];   var left = [];   var right = [];   for (var i = 0; i < arr.length; i++){     if (arr[i] < pivot) {       left.push(arr[i]);     } else {       right.push(arr[i]);     }   }   return quickSort(left).concat([pivot], quickSort(right)); }; var arr1 = [1,4,65,21,2,222,111]; console.log(quickSort(arr1));

 

额外补充:

递归实现数组去重

function removeDup(arr,start,end){                if(start === end){ return [arr[start]]; }else if(start == end-1){ //数组中有两个值 if(arr[start] === arr[end]){ return [arr[start]]; }else{ return [arr[start],arr[end]]; } } var ban = Math.floor((end+start)/2); var arrLeft = removeDup(arr,start,ban); var arrRight = removeDup(arr,ban+1,end); var result = arrLeft; //将左边的数组放进去 for(var i = 0; i < arrRight.length; i++){ if(result.indexOf(arrRight[i]) === -1){ result.push(arrRight[i]); } } return result; } console.log(removeDup(arr1,0,arr1.length-1));

转载于:https://www.cnblogs.com/zsweb/p/6496937.html

你可能感兴趣的文章
oracle 表(下)
查看>>
iOS宏(自己使用,持续更新)
查看>>
手把手玩转win8开发系列课程(3)
查看>>
NGINX引入线程池 性能提升9倍
查看>>
《淘宝技术这十年》读书笔记 (四). 分布式时代和中间件
查看>>
linux下mongodb定时备份指定的集合
查看>>
SMP架构多线程程序的一种性能衰退现象—False Sharing
查看>>
oVirt JBAS server start failed, ajp proxy cann't server correct. ovirt-engine URL cann't open
查看>>
CDP WebConsole上线公告
查看>>
ubuntu下安装摄像头应用程序xawtv
查看>>
GFS2,GFS,EXT2,EXT3 SEQ-write performance compare
查看>>
PostgreSQL 如何比较两个表的定义是否一致
查看>>
PHPCMS2008利用EXP
查看>>
扩展android-volley来开发Android restful client
查看>>
Linux Mint下Kindle Fire调试android程序
查看>>
自定义Background
查看>>
git笔记
查看>>
Android开源中国客户端学习 配置文件读写 以及其他一些工具类 <13>
查看>>
国外的opencv识别文档
查看>>
java获取指定字符串的下一个
查看>>