首页 > 代码库 > JS学习笔记——数组去重
JS学习笔记——数组去重
<script type="text/javascript"> //indexOf”是ECMAScript5方法,IE8以下不支持,需多写兼容低版本浏览器代码。 Array.prototype.indexOf=Array.prototype.indexOf|| function(item){ for(var i=0;i<this.length;i++) { if(this[i]===item) { return i; } } return -1; } var obj={ name:‘312‘ } function newobj(){ } var a=[0,0,new String(1), new Number(1),obj,obj,new newobj(),new newobj()]; Array.prototype.forEach = Array.prototype.forEach || function(callback, thisArg) { if (!callback || typeof callback !== ‘function‘) return; for (var i = 0, j = this.length; i < j; i++) { callback.call(thisArg, this[i], i, this); } } function removeDuplicatedItem1(arr) { var ret=[]; for(var i=0;i<arr.length;i++) { if(ret.indexOf(arr[i])===-1) { ret.push(arr[i]); } } return ret; } // 0 1 1 [object object] [object object ][object object] function removeDuplicatedItem2(arr) { var ret=[]; arr.forEach(function(e,i,arr){ if(arr.indexOf(e)===i) ret.push(e); }); return ret; } //// 0 1 1 [object object] [object object ][object object] function removeDuplicatedItem3(ar) { var ret = [], end; ar.sort(); end = ar[0]; ret.push(ar[0]); for (var i = 1; i < ar.length; i++) { if (ar[i] !== end) { ret.push(ar[i]); end = ar[i]; } } return ret; }// 0 1 1 [object object] [object object ][object object] //上述都做了两次循环 因此需要优化 function removeDuplicatedItem4(arr)//unique([ new String(1), new Number(1) ]) 无法判断 { var tem={}; var ret=[]; for(var i=0;i<arr.length;i++) { var item=arr[i]; var key=typeof(item)+item; //因为对象只能存放字符串,所以要区分 1 ‘1‘ if(!tem[key]) { tem[key]=1; ret.push(item); } } return ret; } //0 1 [object object] </script>
JS学习笔记——数组去重
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。