将一个全是数字的数组按照数字大小从大到小或者从小到大重新排列,这类问题并不少见,在此,列举了一种数组排序的方法。
先var一个数组并写出排序的函数
var Arr = [10,2,0.6,51,133,125,1,0.05,555,0];
Array.prototype.paiXu = function(){
var temp;
for(var i=0; i<Arr.length;i++) {
for(var j=i+1;j<Arr.length;j++) {
if(Arr[i]<Arr[j]) { //升序 >、降序 <
temp=Arr[i];
Arr[i]=Arr[j];
Arr[j]=temp;
}
}
}
return Arr
};
原理:(降序为例)设置一个temp变量用于存储对比数,那么temp第一次循环的值等于Arr[0],即temp = 10;
然后依次和数组其他元素做对比,循环过程中,当temp当前值小于某一值(假设X),则重新给temp赋值X;
依次循环下去,不停地给temp赋予新值,同时也在重组数组,最终得到的数组就是一个降序的数组。
调用:
Arr.paiXu()
可打印出来检测,结果亲测可用。
还有一种js自带的排序功能
var numArr = [3,6,2,4,1,5];
console.log(numArr.sort());
console.log(numArr.sort().reverse());
// 这种方式只适合个位数,一旦是多位数,就会达不到想要的效果,例如:
var arr1 = [1,12,11,2,21];
console.log(arr1 .sort());
// 结果是[1,11,12,2,21]
输出结果:[1, 2, 3, 4, 5, 6] 和 [6, 5, 4, 3, 2, 1]