数组排序
先来几个高级算法:
从大到小排序:
var arr=[5,2,9,11,6,7,12];
arr.sort(function (n1,n2){
return n2-n1;
});
alert(arr);
从小到大排序:
var arr=[5,2,9,11,6,7,12];
arr.sort(function (n1,n2){
return n1-n2;
});
alert(arr);
随机排序:
var arr=[5,2,9,11,6,7,12];
arr.sort(function (){
return Math.random()-0.5;
});
alert(arr);
手写数组排序:
方法一:
1.封装函数,找到iMinIndex;
2.循环数组,把最小的放前放;
function findIminIndex(arr,start){
var iMin=arr[start];
var iMinIndex=start;
for(var i=start+1;i<arr.length;i++){
if(arr[i]<iMin){
iMin=arr[i];
iMinIndex=i;
}
}
return iMinIndex;
}
var arr=[34,12,7,5,6,135,99];
for(var i=0;i<arr.length;i++){
var n=findIminIndex(arr,i);
//arr[n] arr[i]
var temp;
temp=arr[n];
arr[n]=arr[i];
arr[i]=temp;
}
alert(arr);
手写数组去重
方法一:
1.构建新数组存放;
2.循环原数组,并将没有重复的push到新数组;
var arr=[11,22,2,2,3,4,55,5,4,4,3];
function findInArr(item,arr){
for(var i=0;i<arr.length;i++){
if(arr[i]==item)return true;
}
return false;
}
var arr2=[];
for(var i=0;i<arr.length;i++){
if(!findInArr(arr[i],arr2)){
arr2.push(arr[i]);
}
}
//alert(arr2);
document.write(arr2)
方法二:
1.根据json的键值不相同原则,将可以作为键值的push到一个新的数组中;
var arr=[11,22,2,2,3,4,55,5,4,4,3];
var json={};
for(var i=0;i<arr.length;i++){
json[arr[i]]='zzzzzz';
}
//console.log(json);
var arr2=[];
for(var name in json){
arr2.push(name);
}
//alert(arr2);
document.write(arr2);
方法三:
1.原数组排序;
2.比较原数组相邻位置是否相等;
3.若相当,splice该数,并注意将i--;
var arr=[11,22,2,2,3,4,55,5,4,4,3];
arr.sort();
//alert(arr);
for(var i=0;i<arr.length;i++){
if(arr[i]==arr[i+1]){
arr.splice(i,1);
i--;
}
}
alert(arr);
网友评论