数组去重方法:
1.indexOf()检测法
Array.prototype.unique2 = function() { var n = {},r=[]; //n为hash表,r为临时数组 for(var i = 0; i < this.length; i++) //遍历当前数组 { if (!n[this[i]]) //如果hash表中没有当前项 { n[this[i]] = true; //存入hash表 r.push(this[i]); //把当前数组的当前项push到临时数组里面 } } return r; }
2.hash表
Array.prototype.myunique = function() { var n = {},r=[]; //n为hash表,r为临时数组 for(var i = 0; i < this.length; i++) //遍历当前数组 { if (!n[this[i]]) //如果hash表中没有当前项 { n[this[i]] = true; //存入hash表 r.push(this[i]); //把当前数组的当前项push到临时数组里面 } } return r; }
3.比较相邻的两个值Array.prototype.myunique = function() { this.sort(); var re=[this[0]]; for(var i = 1; i < this.length; i++) { if( this[i] !== re[re.length-1]) { re.push(this[i]); } } return re; }
排序算法:
1.快速排序法 该方法看的阮一峰老师的博客 思路非常清晰 适合初学者学习
思路: a.在数据集中选取一个元素作为"基准" 可以是任何一个元素 当然最好不是第一个和最后一个 我们一般选取中间的一个 Math.floor(arr.length/2);
b.所有小于“基准”的都放到左边,大于“基准”的都放到右边
c.对“基准”左右两边的子集重复执行a,b两步,即递归;直到所有子集只剩下一个元素为止;
d.将“基准”和左右两边的子集合并为一个数组即可;
function quickSort(arr){ if(arr.length<=1) return arr; //确定数组长度 var pivotIndex = Math.floor(arr.length/2);//选取基准索引 var pivot = arr.splice(pivotIndex,1)[0];//选取基准 var left=[],right=[]; for(var i=0,len=arr.length;i<len;i++){ if(arr[i]<pivot){ left.push(arr[i]);//将小于“基准”的放到左边 }else{ right.push(arr[i]);//将大于“基准”的放到右边 } } return quickSort(left).concat([pivot],quickSort(right));//递归合并 }
基础知识:
1.函数内置参数数组对象 arguments
function sum(a,b,c){ var len = arguments.length,s=0; for(var i=0;i<len;i++){ s+=arguments[i]; } return s; }