切换导航
京西&周倍庆&程序猿
首页
前端
JavaScript
jQuery
AngularJS
Bootstrap
后端
Nginx
MySQL
PHP
系统
Mac
Centos
杂谈
工作
娱乐
爱情
梦想
JS算法之去掉数组中的重复元素
浏览量:
60
发布时间:
2016-01-14
发布人:
京西
文章由
京西
原创,转载时请在文章底部添加如下内容
本文转载自京西的个人博客,原文链接为
http://www.siguoya.name/home/article/45
相关推荐
JavaScript现在和将来都将是编程
创造 JavaScript 仅用 10
###给定一个数组[1,2,4,3,3,4,5],通过JS算法移除数组中的重复元素 `思路一:` - 初始化一个数组作为结果数组,存放从给定数组中过滤后的唯一的元素 - 对给定数组中的元素进行遍历,如果给定数组中的元素在结果数组中已经存在,则不再添加,否则就添加到结果数组中去 ```javascript function delRepeat(arr){ //arr是给定数组 //tmpArray是结果数组 var tmpArray=[arr[0]]; for(var i=1;i<arr.length;i++){ var repeat=false for(var j=0;j<tmpArray.length;j++){ if(arr[i]==tmpArray[j]){ repeat=true; break; } } if(!repeat){ tmpArray.push(arr[i]); } } return tmpArray; } var arr=[1,2,4,3,3,4,5]; //输出结果"1,2,4,3,5" alert(delRepeat(arr)); ``` `思路二:` - 初始化一个数组作为结果数组,存放从给定数组中过滤后的唯一的元素 - 对给定数组中的元素先排序之后再进行遍历,如果给定数组中的元素在结果数组中已经存在,则不再添加,否则就添加到结果数组中去 - 好处是比思路一的解决方法执行效率更高 - 弊端是`会打乱原有的数组顺序` ```javascript function delRepeat(arr){ arr.sort(); var tmpArray=[arr[0]]; for(var i=1;i<arr.length;i++){ if(arr[i]!==tmpArray[tmpArray.length-1]){ tmpArray.push(arr[i]); } } return tmpArray; } var arr=[1,2,4,3,3,4,5]; //输出结果"1,2,3,4,5" alert(delRepeat(arr)); ``` `思路三[推荐]:` - 初始化一个对象来作为数组元素是否存在的映射,然后再初始化一个数组用来存放从给定数组中过滤后的唯一的元素 - 对给定数组中的元素进行遍历,与对象的中的键进行比对,如果给定数组中的元素已经在对象里面存在对应的键,则不再添加,否则就添加到结果数组中去 ```javascript function delRepeat(arr){ var tmpObj={} tmpArray=[]; for(var i=0;i<arr.length;i++){ if(!tmpObj[arr[i]]){ tmpObj[arr[i]]=true; tmpArray.push(arr[i]); } } return tmpArray; } var arr=[1,2,4,3,3,4,5]; //输出结果"1,2,4,3,5" console.log(delRepeat(arr)); ``` **综上所述,思路三中的解决方法最佳,既能够保证数据的原生性,又能够保证执行的效率!**