sort

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) // 绝对按拼音排的

 

posted @ 2017-02-03 17:49  花.花  阅读(303)  评论(0编辑  收藏  举报