• sort()的函数参数 —— function(a,b){return a b} 相关问题_20220114


    sort()的函数参数——function(a,b){return a -b} 相关问题

    sort()的定义和用法

    sort() 方法用于对数组的元素进行排序。

    排序顺序可以是字母或数字,并按升序或降序。

    默认排序顺序为按字母升序。

    注意:当数字是按字母顺序排列时"40"将排在"5"前面。

    使用数字排序,你必须通过一个函数作为参数来调用。

    函数指定数字是按照升序还是降序排列。

    这些说起来可能很难理解,你可以通过本页底部实例进一步了解它。

    注意: 这种方法会改变原始数组!。(参考:https://www.runoob.com/jsref/jsref-sort.html)

    关于 sort() 这个函数,平时只是用来做一些简单的排序,也只能进行升序排序,以前认为它功能单一,其实不然,写好该函数的参数,sort() 的功能强大出乎想象

    1、sort 的原理

    在这里插入图片描述

    img

    此处正序排序原理:

    return a-b 这段代码:a指的是array[j] b 指的是array[j+1] 即 a 指的是前一个数,b指的是后一个数;
    a-b>0时,也就是 第一个数比第二个数大 则 在if语句中 fncompare()函数的结果 为>0
    所以if语句可以执行,两个数交换位置 a 数 换到 b 的位置 意思是 :大的数向后移动
    所以 return a-b 的结果就是正序(因为将大的数向后排)
    同理 可以知道 return b-a 就是倒序。

    引用自:https://blog.csdn.net/qq_43058026/article/details/104531495

    图片2中的代码我不知道是不是JavaScript的源码,不过表达的意思很清楚了,sort的原理大概就是冒泡排序吧

    2、应用实例

    eventOrderArr.sort((a, b) => {
    			if (moment(a.startDate).isAfter(b.startDate)) return 1;
    			if (moment(a.startDate).isBefore(b.startDate)) return -1;
    			return 0;
    		});
    此处使用的是 时间插件 moment.js 里面的时间比较函数,比较了 a元素和b元素的 startDate 属性 如果 a.startDate 要晚于(isAfter) b 就返回 1,
    

    此处使用的是 时间插件 moment.js 里面的时间比较函数,比较了 a元素和b元素的 startDate属性 如果 a.startDate 要晚于(isAfter) b 就返回 1,如果 a.startDate 要早于(isBefore) b 就返回 -1,相同则返回 0,

    这样写就能够 对 eventOrderArr 这个复杂对象数组,根据 startDate属性 进行按 时间先后的 升序排序

    掌握了 sort() 的函数参数的写法,对于一些比较 复杂的数组也能轻松进行排序了!

  • 相关阅读:
    ELK 一些截图
    AD域
    NPOI
    搭建harbor
    【【【【日常问题记录】】】】
    golang yaml配置文件解析
    golang操作mysql使用总结
    【转】mysql优化步骤
    【转】Mysql事务,并发问题,锁机制
    golang curl
  • 原文地址:https://www.cnblogs.com/OwlInTheOaktree/p/15801794.html
Copyright © 2020-2023  润新知