js中sort方法的使用

/**
@param {function} [compareFn]
@return {Array.<T>}
*/
Array.prototype.sort = function(compareFn) {}
/**
      * Sorts an array.
      * @param compareFn The name of the function used to determine the order of the elements. If omitted, the elements are sorted in ascending, ASCII character order.
      */
    sort(compareFn?: (a: T, b: T) => number): T[];

可以看到该函数的参数是一个函数如果不传入参数或者参数不是一个函数那么该函数最多可以升序排列10个以内的数

  var arr = [2, 412, 3213, 22, 122,222,222,2277,22898,22423432,2,9];
    arr.sort();

传入的是两个参数返回值是number类型的函数

 arr.sort(function (a, b) {
        return a - b;
    });

如果 return a- b就是求升序:因为 如果a-b大于0那么交换a和b的位置因此为升序
如果return b-a那就是降序:因为如果b-a大于0那么交换a和b的位置因此是降序
如果返回值是例如 return 1那么仅仅只是将数组进行了逆序排列相当于 reverse
如果返回值是如果 return <=0的数那么保持不变

函数内部会多次进行比较可能使用了冒泡插入等排序规则

二维数组的比较

    var arr = [
        {name:'小二',age:18},
        {name:'小222',age:13},
        {name:'小33',age:23},
    ];

    arr.sort(function (a,b) {
       // 以年龄排序
        return parseFloat(a.age) - parseFloat(b.age);
    });
    console.log(arr);

// 比较汉字字符串排序用localcompare函数

  var arr = [
        {name: '小二', age: 18},
        {name: '小222', age: 13},
        {name: '小33', age: 23},
    ];
        arr.sort(function (a, b) {
        return a.name.localeCompare(b.name);
    });
    console.log(arr);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,027评论 19 139
  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 4,229评论 0 6
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,787评论 0 33
  • 贪婪(尽可能多) 例题取出 aabab中从a开始到最后一个b之间的所有字符 可见贪婪的格式为 a.*b 懒惰(尽可能少)
    蚂蚁牙齿不黑阅读 253评论 0 0