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; });
输出:当然,如果需要多重排序,只需要在sort传入的函数里在加判断就可以了,这里就不过多赘述。