JavaScript深入理解sort()方法
一. 基本用法
let arr1 = [3, 5, 7, 1, 8, 7, 10, 20, 19]
console.log(arr1.sort())
// [1, 10, 19, 20, 3, 5, 7, 7, 8]
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
其实,在使用sort()进行排序的时候会调用toString()函数将其值转换成字符串在进行比较,是按ASCII进行比较的。
于是,在比较数字时会转换成字符串再比较,结果就会不准确。
二. 改进用法
let arr1 = [3, 5, 7, 1, 8, 7, 10, 20, 19]
console.log(arr1.sort(function (a, b) {
if (a < b) {
return -1
}
if (a > b) {
return 1
}
return 0
}))
// [1, 3, 5, 7, 7, 8, 10, 19, 20]
console.log(arr1.sort(function (a, b) {
return a - b
}))
// [1, 3, 5, 7, 7, 8, 10, 19, 20]
sort()同时也是一个高阶函数,里面可以放一个比较函数:arr.sort(compareFunction)。
arr.sort(function (a, b) {
return ?
})
- 若compareFunction返回值小于0,a排在b前面,即a与b的位置不变。
- 若compareFunction返回值等于0,a与b的位置不变。
- 若compareFunction返回值大于0,a排在b的后面,即a与b的位置交换。
即若返回值大于0的时候交换a与b的位置,其他情况位置不变。
- 升序:return a - b
- 降序:return b - a
// 降序示例
let arr1 = [3, 5, 7, 1, 8, 7, 10, 20, 19]
console.log(arr1.sort(function (a, b) {
return b - a
}))
// [20, 19, 10, 8, 7, 7, 5, 3, 1]
console.log(arr1.sort((a, b) => {
return b - a
}))
// [20, 19, 10, 8, 7, 7, 5, 3, 1]
三. 比较数组中的对象
let arr2 = [
{
name: 'mazey0',
value: 3
},
{
name: 'mazey1',
value: 5
},
{
name: 'mazey2',
value: 7
},
{
name: 'mazey3',
value: 1
},
{
name: 'mazey4',
value: 10
},
{
name: 'mazey5',
value: 7
}
]
// 升序
let arr3 = arr2.sort((a, b) => {
return a.value - b.value
})
arr3.forEach((value, index, arr) => {
console.log(value.value)
})
// 1 3 5 7 7 10
JavaScript深入理解sort()方法的更多相关文章
- Javascript Array对象 sort()方法,记忆方法,方法扩展
相信 有很多 同仁们,尤其是初学者,在记住 Array对象 sort() 方法的排序,规则上,有点困难: 其实sort()方法已经在实际工作中用到很多遍了,可当我仔细推敲,这个sort()方法,什么时 ...
- JavaScript 中数组 sort() 方法的基本使用
在日常的代码开发中,关于数组排序的操作可不少,JavaScript 中可以调用 sort 方法对数组进行快速排序. 今天,就数组的 sort 方法来学习一下,避免日后踩坑的悲惨遭遇. 概念 sort ...
- 【JavaScript排序】 sort()方法(解决null、undefined、0之间的排序(混乱)问题)
JavaScript排序 - sort()方法 --解决null.undefined.0之间的排序(混乱)问题 一.普通的数组排序 JavaScript中用方法sort()为数组排序.sort() ...
- 你真的会用JavaScript中的sort方法吗
在平时的业务开发中,数组(Array) 是我们经常用到的数据类型,那么对数组的排序也很常见,除去使用循环遍历数组的方法来排列数据,使用JS数组中原生的方法 sort 来排列(没错,比较崇尚JS原生 ...
- JavaScript Array对象sort() 方法小结
sort() 方法用于对数组的元素进行排序. 语法arrayObject.sort(sortfunction) 参数sortfunction 可选.规定排序顺序.必须是函数. 返回值对数组的引用.请注 ...
- javascript中的sort()方法
现在在学习javascript中,发现sort()函数是有点奇怪的东西(可能是本人水平的问题-_-!),于是就在这里记录一下自己找到的东西吧.sort()这个方法的参数很奇怪,必须是函数,但也是可选参 ...
- javascript 中根据sort 方法随机数组 (Math.random)
var arr = [1,2,3,4,5,6,7,8,9,10]; function Arandom(a,b){ return (Math.random() > 0.5) ? 1 : -1;; ...
- JavaScript深入理解对象方法——Object.entries()
Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性) 示例 ...
- (JavaScript基础向)sort()方法里的排序函数的理解
比较常见的解释可以看这里:js的sort()方法,这篇博客写得挺好的,一般的应用的理解已经足够了. 但是如果要活用sort()方法里面的参数——也就是排序函数的话,可能就比较难理解了. 然后我就总结出 ...
随机推荐
- Python基础--人们一些最爱的标准库(random time)
Python继续! random 包括返回随机数的函数. 这里跟C++一样,产生的是伪随机数,并非全然随机数. random中一些重要的函数: random() 返回0<n<=1的随机数n ...
- C/C++ linux下光标定位和清屏函数
printf("\033[47;31mhello world\033[5m"); 47是字背景颜色, 31是字体的颜色, hello world是字符串. 后面的\033[5m是 ...
- [1-4] 把时间当做朋友(李笑来)Chapter 4 【开拓我们的心智】 摘录
1. 获得知识的基本途径 所有的人获取知识的最为基础的手段就是“体验”. 比“体验”再高级一点的获取知识的手段,就是“试错”(Trial and Error). 在“试错”这个手段的基础上,另外一个 ...
- C-类型转换(陷阱)
getchar() 返回值为int类型 1.自动类型转换(运算符两边变量类型不同时) 1).两个变量类型自动转换成一样的类型(会根据参数类型自动转换, 而不是直接位转换), 且运算结果也是转换后的类型 ...
- android-pull方式解析xml文件以及XML文件的序列化
android解析XML ---------------------------基础要像磐石 在android平台上可以使用SAX.DOM和自带的Pull解析器解析xml文件,本文主要介绍使用pull ...
- 查看电脑CPU核心数的方法
查看电脑CPU核心数的方法: 方法一: 同时按下[Ctrl+Shift+Esc]组合快捷键打开任务管理器: 点击[性能]就可以看出是几核CPU了: 方法二: 在计算机图标上面点击右键,选择“管理”: ...
- Python MQTT客户端实现
1.安装paho-mqtt 使用Python Package Index (PyPi) pip install paho-mqtt 使用virtualenv virtualenv paho-mqtt ...
- 无线网络RSSI、SSID、BSSID
获取无线网络,及无线网络的参数之前,我们先了解一下RSSI,SSID和BSSID分别是什么,当然你可以去百度或者维基百科查阅,我这里只是简单的说明一下.RSSI就是无线网络的信号强度,这个是和无线AP ...
- mongo views
db.itemsView.drop(); db.items.aggregate([ { "$match": { "status": "true&quo ...
- 43. Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】
[视频&交流平台] àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm ...