sort()方法用于对数组的排序,并返回数组。基本用法为:arr.sort();默认为升序排列。
例:
var arr = [5,3,1,6,4,3,2];
arr.sort(); // [1, 2, 3, 3, 4, 5, 6]
如果想按照其他标准进行排序,sort()方法是可以传入一个函数,函数通过返回一个值来决定 这两个值需不需要交换位置。
例:
arr.sort(function(a,b){
return a-b;
});
如果a-b > 0,则a和b交换位置。当然这样写出来的话是升序排列。如果要降序排则把a-b改成b-a就 可以实现,就是说b大于a,则b和a交换位置,把大的值排前面。a,b的值就是从arr[0],arr[1]开始比较的, 类似冒泡排序。
当然以上方法是对number数组排序的,如果是string的话则不能用 a-b ,应当如下:
var arr = ["A","cds","esadf","As"];
arr.sort(function(a,b){
if(a > b){
return 1;
}
}); // ["A", "As", "cds", "esadf"]
当然我们也可以用sort()去给json对象数组排序,甚至双重、多重排序。如下例子,我们按学生的总分排序,如果总分相等,我们再按照语文成绩排序。
var jsonStudents = [
{name:"Dawson", totalScore:"197", Chinese:"100",math:"97"},
{name:"HanMeiMei", totalScore:"196",Chinese:"99", math:"97"},
{name:"LiLei", totalScore:"185", Chinese:"88", math:"97"},
{name:"XiaoMing", totalScore:"196", Chinese:"96",math:"100"},
{name:"Jim", totalScore:"196", Chinese:"98",math:"98"},
{name:"Joy", totalScore:"198", Chinese:"99",math:"99"}];
jsonStudents.sort(function(a,b){
var value1 = a.totalScore,
value2 = b.totalScore;
if(value1 === value2){
return b.Chinese - a.Chinese;
}
return value2 - value1;
});
输出:
0:{name: "Joy", totalScore: "198", Chinese: "99", math: "99"}
1:{name: "Dawson", totalScore: "197", Chinese: "100", math: "97"}
2:{name: "HanMeiMei", totalScore: "196", Chinese: "99", math: "97"}
3:{name: "Jim", totalScore: "196", Chinese: "98", math: "98"}
4:{name: "XiaoMing", totalScore: "196", Chinese: "96", math: "100"}
5:{name: "LiLei", totalScore: "185", Chinese: "88", math: "97"}