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

sort()的定义和用法

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

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

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

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

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

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

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

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

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

1、sort 的原理

此处正序排序原理:

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() 的函数参数的写法,对于一些比较 复杂的数组也能轻松进行排序了!

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

  1. PHP笔记4__函数/全局、静态变量/函数参数/加载函数库/,,

    <?php header("Content-type: text/html; charset=utf-8"); echo table(5,5); function table ...

  2. javascript基础:函数参数与闭包问题

    今天在写东西的时候,对函数参数的概念有些模糊,查阅相关资料后,在博客上记点笔记,方便日后复习. 首先,在js中函数参数并没有强语言中那么要求严格,他不介意传递进来多少个参数,也不在乎传进来的参数是什么 ...

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

    var points = [40,100,1,5,25,10]; var b= points.sort(function(a,b){return a-b}); console.log(b); 那个fu ...

  4. PythonStudy——函数的返回值 The return value of the function

    # 在函数体中,通过return关键词返回函数的内部数据给外部 """# 一.作用# return作用:1.结束函数:2.将函数的内部数据返回给外部 def fn(): ...

  5. ES6,变量,函数-参数,结构赋值

    变量 var 1.可以重复声明. 无法限制修改-, 没有块级作用域 let不能重复声明,变量-可以修改,块级作const不能重复声明,常量-不能修改,块级作 函数——箭头函数function 名字() ...

  6. python基础-4 函数参数引用、lambda 匿名函数、内置函数、处理文件

    上节课总结 1.三元运算 name=“name1”if 条件 else “name2” 2.深浅拷贝 数字.字符串 深浅,都一样 2.其他 浅拷贝:只拷贝第一层 深拷贝:不拷贝最后一层 3.set集合 ...

  7. JS对象 数组排序sort() sort()方法使数组中的元素按照一定的顺序排列。 语法: arrayObject.sort(方法函数)

    数组排序sort() sort()方法使数组中的元素按照一定的顺序排列. 语法: arrayObject.sort(方法函数) 参数说明: 1.如果不指定<方法函数>,则按unicode码 ...

  8. 深入理解javascript函数参数与闭包(一)

    在看此文章,希望先阅读关于函数基础内容 函数定义与函数作用域 的章节,因为这篇文章或多或少会涉及函数基础的内容,而基础内容,我放在函数定义函数作用域 章节. 本文直接赘述函数参数与闭包,若涉及相关知识 ...

  9. Swift 定义函数 参数 返回值

    定义多参数函数 - 用func声明函数  func name(parameters) -> return type { function body } func halfOpenRangeLen ...

  10. jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}

    笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...

随机推荐

  1. spring之事务详解

    1.背景 该博客要解决的重要问题如下: spring的3种安全性问题,4种事务特性,5种隔离级别,7种传播行为 spring的3种安全性问题,4种事务特性,5种隔离级别,7种传播行为 spring事务 ...

  2. Win32_GDI_五星红旗绘制

    五星红旗画法 设置矩形长与高的比为3:2 把矩形分为四个相等的长方形 把左上角宽分为15份,高分为10份 定位大五角星圆心位置,x为宽的5份,y为高的5份 计算五角星五个点的坐标 void SetFi ...

  3. udp协议及包格式

    UDP协议也是互联网基础协议之一.它和TCP一样同属于传输层当中的一个协议. 不过UDP协议是一个面向无连接的协议(TCP是向面连接的协议).一个UDP连接的建立,不必象TCP协议那样需要服务器端侦听 ...

  4. MATLAB 绘制 K 线图

    需要安装 Financial Toolbox. % 示例数据 openPrices = [100, 102, 104, 103, 105]; highPrices = [105, 107, 106, ...

  5. Python with 语句的用法

    with 语句是Python中用于简化资源管理的一种语法结构,通常与上下文管理器(Context Manager)一起使用.上下文管理器提供了一种机制,用于确保资源在使用完毕后能够被正确释放,例如文件 ...

  6. Python自动复制Excel数据:将各行分别重复指定次数

      本文介绍基于Python语言,读取Excel表格文件数据,并将其中符合我们特定要求的那一行加以复制指定的次数,而不符合要求的那一行则不复制:并将所得结果保存为新的Excel表格文件的方法.   这 ...

  7. JMonkeyEngine3 Android 旋转 、放大、缩小一个方块 demo 版本3.5.2-stable

    1. Class,里面是旋转的逻辑,很简陋,可以自己优化 import android.util.Log; import com.jme3.app.SimpleApplication; import ...

  8. spark 怎么读写 elasticsearch

    参考文章: https://www.bmc.com/blogs/spark-elasticsearch-hadoop/ https://blog.pythian.com/updating-elasti ...

  9. if else 代码优化实战

    前言 介绍几种方法,不使用if else语句也能做条件判断. 一:使用枚举 首先定义一个公用接口 RoleOperation,表示不同角色所能做的操作 package com.gavin.enums; ...

  10. C++: 16个基础的C++代码性能优化实例

    前言 近期推动项目屎山代码进行了一波性能优化,实现了较大的性能提升.这里记录了部分近期代码优化的小技巧,这些例子仅从C++语言层面进行优化,主要在于优化类设计.减少隐含函数调用.减少拷贝等,较为基础实 ...