Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodeJS中的arr.sort()如何工作?_Javascript_Node.js - Fatal编程技术网

Javascript nodeJS中的arr.sort()如何工作?

Javascript nodeJS中的arr.sort()如何工作?,javascript,node.js,Javascript,Node.js,我使用arr得到了一个奇怪的结果。下面的代码是sort() const arr=[1,99,102,121,2,2,3,7] arr.sort() console.log(arr) 我得到以下输出 [ 1, 1000, 121, 2, 2, 3, 7, 99 ] 有人能解释一下发生了什么以及为什么吗?接受函数作为参数: compareFunction可选 指定定义排序顺序的函数如果省略,数组元素将转换为字符串,然后根据每个字符的Unicode码点值进行排序 您需要arr.

我使用arr得到了一个奇怪的结果。下面的代码是sort()

const arr=[1,99,102,121,2,2,3,7]
arr.sort()
console.log(arr)
我得到以下输出

[
  1, 1000, 121,  2,
  2,    3,   7, 99
]
有人能解释一下发生了什么以及为什么吗?

接受函数作为参数:

compareFunction可选
指定定义排序顺序的函数如果省略,数组元素将转换为字符串,然后根据每个字符的Unicode码点值进行排序

您需要
arr.sort((a,b)=>a-b)

默认的排序顺序是升序,建立在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列的基础上

因此,您的值将首先转换为字符串,然后按字典进行比较。Ie
“101”
小于
“2”

如果要进行数字排序,必须提供比较函数

const arr=[1,99102121,2,2,3,7]
arr.sort((a,b)=>a-b);
控制台日志(arr)同样相关:| | | | | | |你读了吗?它在第一段中解释了它将值排序为字符串。