五种js实现数组去重的方法
2016-03-26 16:34
766 查看
第一种 删除后面重复元素
第二种 相互比较元素,碰到相同的则跳出循环
第三种 j循环虽然继续了,但是i值已经改变了。就等于是一个新的i循环
第四种 保证新数组中元素唯一
第五种 用对象属性
function removeRepeat1(arr){ var a1=((new Date).getTime()) for(var i=0;i<arr.length;i++) for(var j=i+1;j<arr.length;j++) if(arr[i]===arr[j]){arr.splice(j,1);j--;} console.info((new Date).getTime()-a1) //记录去除数组重复元素所花费时间 return arr.sort(function(a,b){return a-b}); }
第二种 相互比较元素,碰到相同的则跳出循环
function removeRepeat2(a) { var a1=((new Date).getTime()) var b = [], n = a.length, i, j; for (i = 0; i < n; i++) { for (j = i + 1; j < n; j++){ if (a[i] === a[j]){j=false;break;} } if(j) b.push(a[i]); } console.info((new Date).getTime()-a1) return b.sort(function(a,b){return a-b}); }
第三种 j循环虽然继续了,但是i值已经改变了。就等于是一个新的i循环
function ov3(a) { var a1=((new Date).getTime()) var b = [], n = a.length, i, j; for (i = 0; i < n; i++) { for (j = i + 1; j < n; j++) if (a[i] === a[j])j=++i b.push(a[i]);} console.info((new Date).getTime()-a1) return b.sort(function(a,b){return a-b}); }
第四种 保证新数组中元素唯一
function ov4(ar){ var a1=((new Date).getTime()) var m=[],f; for(var i=0;i<ar.length;i++){ f=true; for(var j=0;j<m.length;j++) if(ar[i]===m[j]){f=false;break;}; if(f)m.push(ar[i])} console.info((new Date).getTime()-a1) return m.sort(function(a,b){return a-b}); }
第五种 用对象属性
function ov5(ar){ var a1=(new Date).getTime() var m,n=[],o= {}; for (var i=0;(m= ar[i])!==undefined;i++) if (!o[m]){n.push(m);o[m]=true;} console.info((new Date).getTime()-a1) return n.sort(function(a,b){return a-b});; }
相关文章推荐
- javascript时间戳的坑
- 重拾JavaScript-day1
- js实现九九乘法表
- 深入理解JavaScript系列(32):设计模式之观察者模式
- javascript的错误处理
- 换行符在ajax中返回json,eval时发生的 Unexpected token ILLEGAL
- javascript实现方法调用与方法触发小结
- js函数节流
- js-全局变量与局部变量
- JS实现滚动监听以及滑动到顶部
- podspec转podspec.json
- 小议json与数组的区别
- 笔记-JS中常见的数据运算
- JS魔法堂:从void 0 === undefined说起
- js闭包
- JavaScript arguments对象
- jsp中java代码、jsp代码、js代码执行的顺序
- JSP
- js中设置显示和隐藏
- js中this指向总结