數(shù)組排序
先來幾個高級算法:
從大到小排序:
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);
手寫數(shù)組排序:
方法一:
1.封裝函數(shù)遂蛀,找到iMinIndex罪治;
2.循環(huán)數(shù)組娜遵,把最小的放前放蜕衡;
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);
手寫數(shù)組去重
方法一:
1.構建新數(shù)組存放;
2.循環(huán)原數(shù)組设拟,并將沒有重復的push到新數(shù)組衷咽;
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.根據(jù)json的鍵值不相同原則,將可以作為鍵值的push到一個新的數(shù)組中蒜绽;
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.原數(shù)組排序;
2.比較原數(shù)組相鄰位置是否相等桶现;
3.若相當躲雅,splice該數(shù),并注意將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);