zoukankan      html  css  js  c++  java
  • 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) // 绝对按拼音排的
  • 相关阅读:
    objc之method&class attributes
    iOS之Export UIAutomation script
    js's forin vs oc's forin
    iOS新加速计事件
    Mac之Font管理
    iOS之VoiceOver
    OC之initialize
    C++常见问题
    objc新老runtime接口类型对比
    dlopen之mode参数详解
  • 原文地址:https://www.cnblogs.com/2han/p/6363162.html
Copyright © 2011-2022 走看看