关于js中sort()排序方法
第一次写这个,算是记录自己的学习前端的一点点的历程吧。今天在做一个图片的随机排序遇到了一个问题,部分截图如下
我用的是json格式存储数组,想通过排序实现img数组中的内容升序或是降序发现用sort自带的方法不行,w3school上的原话是:sort() 方法用于对数组的元素进行排序,arrayObject.sort(sortby) (记住sort方法排序改变的是原有的数组不生成副本)如果调用该方法时没有使用参数,将按字母顺序(Ascall编码)对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。如果要想进行升序或是降序排序的话,要提供比较函数。
比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
什么意思呢,默认a,b两个参数 若是 a-b 若是 小于 0则 a前b后 ,大于0 则 a后b前。
若是b-a 若是 小于0 则 a前b后 ,大于0 则 a后b前。
通过调试发现默认情况下,a-b时 a的值都是比b小(随机出现) 故会出现升序情况 故返回值都是小于0的
b-a时 b的值都是比a大,故会出现降序情况 故返回值都是大于0的
下面附上调试截图:
b-a降序情况下


a-b升序序情况下


总结一下就是:随机选取的a,b两个值通常情况下,都是a的值比b小,排序规则是根据返回值,小于0则 升序 大于0 则降序,
第一参数a, 第二参数b ------ a-b升序 b-a降序。
如有问题,欢迎指出,第一次写累死了O(∩_∩)O哈哈~
关于js中sort()排序方法的更多相关文章
- js数组sort排序方法的算法
说明一下,ECMAScript没有定义使用哪种排序算法,各个浏览器的实现方式会有不同.火狐中使用的是归并排序,下面是Chrome的sort排序算法的实现. sort方法源码 DEFINE_METHOD ...
- js中的排序方法
一.冒泡排序 var arr=[22,1,33,19,77]; function bubbleSort(arr){ for(var i=0;i<arr.length-1;i++){ for( ...
- JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)
1.装箱和拆箱: 装箱:把基本数据类型转化为对应的引用数据类型的操作: var num = 123 // num var objNum = new Num(123) // object console ...
- JavaScript -- 时光流逝(二):js中数组的方法
JavaScript -- 知识点回顾篇(二):js中数组的方法 1. 数组 (1)定义数组,数组赋值 <script type="text/javascript"> ...
- js中的tostring()方法
http://blog.sina.com.cn/s/blog_85c1dc100101bxgg.html js中的tostring()方法 (2013-11-12 11:07:43) 转载▼ 标签: ...
- 秒味课堂Angular js笔记------Angular js中的工具方法
Angular js中的工具方法 angular.isArray angular.isDate angular.isDefined angular.isUndefined angular.isFunc ...
- JS中通过call方法实现继承
原文:JS中通过call方法实现继承 讲解都写在注释里面了,有不对的地方请拍砖,谢谢! <html xmlns="http://www.w3.org/1999/xhtml"& ...
- jQuery与JS中的map()方法使用
1.jquery中的map()方法 首先看一个简单的实例: $("p").append( $("input").map(function(){ return $ ...
- ASP.NET#使用母版时,如果要使用js中的getElementById()方法取得某个内容页的元素时要注意的问题
当使用母版,要使用js中的getElementById()方法取得某个内容页的元素时,所选取的id并不是母版中内容页的id,而是在设计内容页时设定的id例子:母版页: ...... <head ...
随机推荐
- QT 第三方串口库COM10以上无法读取问题
当COM口的端口号高于9时,也就是说从COM10往后,serialPortName赋值就不能跟COM1~~COM9一样,C++中COM大于9时,COM前面需要加上\\.\COM. 如,serialPo ...
- 最喜欢的算法(们) - Levenshtein distance
String Matching: Levenshtein distance Purpose: to use as little effort to convert one string into th ...
- C#基于Office组件操作Excel
1. 内容简介 实现C#与Excel文件的交互操作,实现以下功能: a) DataTable 导出到 Excel文件 b) Model数据实体导出到 Excel文件[List&l ...
- TP-LINK telnet远程 重启路由器
突然断网,以前房东的路由器管理页面可以打开,今天突然间就打不开了.ping了下,可以ping通,于是就想起了房东的路由器是TP-LINK的 可以 telnet登陆的.每次,断网,我都会重启房东的路由器 ...
- SDK接入(U8SDK)——SDK抽象层的设计
上一篇文章,我们总体地分析并设计了一套高效的SDK接入方案,也罗列出这套方案,我们需要完成的工作.这里再罗列并回顾下: 1.统一抽象的SDK接入框架 2.各个SDK接入实现 3.一键打包工具 4.统一 ...
- 百度地图api(摘自百度)
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- Java使用velocity导出word
效果展示: 使用word编辑好模板
- poj 1806 分块模拟
Manhattan 2025 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1318 Accepted: 703 Des ...
- HTTP笔记整理(2)
四. http协议之请求 1.http请求由三部分组成,分别是:请求行(request line).请求报头(request header).请求正文(body) (1). 请求行:用来说明请求类 ...
- JAVA缓存技术
介绍 JNotify:http://jnotify.sourceforge.net/,通过JNI技术,让Java代码可以实时的监控制定文件夹内文件的变动信息,支持Linux/Windows/MacOS ...