日常项目中虽然大部分情况后台传过来的数据都是排好序的,但是不乏有特殊情况需要用把对象或者数组进行排序,或者排好序的进行打乱。下面就总结了一些日常工作中遇到的一系列排序问题,供自己复制粘贴用。
其实,几乎所有排序都是依托sort()函数来实现的。sort() 方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串UniCode码。因为排序是按照字符串UniCode码的顺序进行排序的,所以首先应该把数组元素都转化成字符串(如有必要),以便进行比较。
语法:arrayObject.sort(sortby)
。参数sortby可选,用来规定排序的顺序,但必须是函数。
目录
数组的升降排序
sort默认排序:
var arr1= ["axx","cxx","bxx","dxx"];var arr2= ["100","200","1000","10000"];arr1.sort(); //["axx","bxx","cxx","dxx"]arr2.sort(); //["100","1000","10000","200"]
升降序排序
var arr3= ["100","200","1000","10000"];var arr4= ["100","200","1000","10000"];function s(a, b){ return a-b;}function j(a, b){ return b-a;}arr3.sort(s); //["100","200","1000","10000"]arr4.sort(j); //["10000","1000","200","100"]
对象按属性值排序
其实归根到底还是运用了sort()方法:
var arr= [ {name:"王大",age:30}, {name:"刘二",age:29}, {name:"张三",age:28}, {name:"李四",age:27}]function sortBy(key){ return function(a,b){ var val1= a[key]; var val2= b[key]; return val1 - val2; }}arr.sort(sortBy("age"));
当然了,上面的方法是一个参数,如果遇到一个参数相同时候需要用另一个参数排的话,那么就需要从里面加分支语句了!
打乱数组
这个就比较常见了:
//打乱数组Array.prototype.daluanArr= function(){ function randomsort(a, b) { return Math.random()>.5 ? -1 : 1; //用Math.random()函数生成 0~1 之间的随机数与 0.5 比较,返回 -1 或 1 } return this.sort(randomsort);}