sort()
方法在适当的位置对数组的元素进行排序,并返回排序后的数组。 sort 排序不一定是稳定的。默认排序顺序是根据字符串Unicode码点。
sort里面的回调函数,有两个参数,第一个参数表示数组的当前元素和第二个参数表示下一个元素,返回值是正数的话 当前元素和下一个元素调换位置.
仔细研究下, a-b的值是正数的话,a-b>0,a>b,就会调换位置,就变成从小到大排列呢
var arr = [3,2,33]; arr.sort(function(a,b){ return a-b }) // arr [2,3,33]
搞清楚,sort的本质,是根据某来改变数组的排序
然后,一班的学生,按照其学习成绩来排序
var arr = [{
name: "李响",
score: 23
}, {
name: "花姑子",
score: 56
}, {
name: "雷震子",
score: 45
}, {
name: "郑青",
score: 89
}, {
name: "李逵",
score: 9
}, {
name: "哈根达斯",
score: 99
}]
arr.sort(function(a, b) { return a.score - b.score }) console.log(arr); // [真的按成绩排的,看下控制台吧,懒得写了]
顺便提另外一个方法,localeCompare, 用法:refrenceStr.localeCompare(compareStr)
- 当 referenceStr 在 compareStr 前面时返回负数
- 当 referenceStr 作 compareStr 后面时返回正数
- 相同位置时返回0
console.log("a".localeCompare("b")) // -1 console.log("a".localeCompare("a")) // 0 console.log("b".localeCompare("a")) // 1 console.log("bofang".localeCompare("aning")) // 1 // 忘了说,这个可以根据语言,自动转换,其他语言没深究,汉字是按照拼音的,但是相同的拼音不知道是根据啥排的 console.log("播放".localeCompare("阿宁")) // 1 console.log("ame".localeCompare("aning")) // -1 console.log("阿么".localeCompare("阿宁")) // -1
所以刚刚排序完的数组,可以再根据人名字排序
arr.sort(function (a,b) { return a.name.localeCompare(b.name); }) console.log(arr) // 绝对按拼音排的