var arr=[2,3,2,44,33,3,88,13,'2'];
//遍历数组法 Array.prototype.unique1=function(){ var start=new Date().getTime();console.log(start); var n=[]; for(var i=0,l=arr.length;i<l;i++){ if(n.indexOf(arr[i])==-1){ n.push(arr[i]); } } var end=new Date().getTime();console.log(end); var time=end-start;console.log(time); return n; } //var x=arr.unique1();console.log(x);// [2, 3, 44, 33, 88, 13,'2']
//对象键值对法 //时间快,空间换时间,占内存大 Array.prototype.unique2=function(){ var start=new Date().getTime();console.log(start); var n = {}, r = [], val, type; for (var i = 0,len=arr.length; i < len; i++) { val = arr[i]; type = typeof val; if (!n[val]) { n[val] = [type]; r.push(val); } else if (n[val].indexOf(type) < 0) { n[val].push(type); r.push(val); } } var end=new Date().getTime();console.log(end); var time=end-start;console.log(time); return r; } //var x=arr.unique2();console.log(x);
//数组下标判断 Array.prototype.unique3=function(){ var n=[arr[0]]; for(var i=1,l=arr.length;i<l;i++){ if (arr.indexOf(arr[i]) == i) n.push(arr[i]); } return n; } //var x=arr.unique3();console.log(x);
//排序后相邻去除法 Array.prototype.unique4=function(){ arr.sort(); var n=[arr[0]] for(var i=0,l=arr.length;i<l;i++){ if(arr[i]!==n[n.length-1]){ n.push(arr[i]); } } return n; } //var x=arr.unique4();console.log(x);
兼容ie8以下 indexOf函数
if (!Array.prototype.indexOf){ // 新增indexOf方法 Array.prototype.indexOf = function(item){ var result = -1, a_item = null; if (this.length == 0){ return result; } for(var i = 0, len = this.length; i < len; i++){ a_item = this[i]; if (a_item === item){ result = i; break; } } return result; } }
数组排序
冒泡
var arr=[12,3,5,12,15,9,1]; Array.prototype.bubble=function(){ var l=this.length,d; for(var i=0;i<l;i++){ for(var j=0;j<l;j++){ if(arr[i]<arr[j]) arr[i]=[arr[j],arr[j]=arr[i]][0]; } } return arr; }
希尔
111111111111