JavaScript-内部JavaScript排序方法对数字数据进行排序-True还是False?

JavaScript-内部JavaScript排序方法对数字数据进行排序-True还是False?,javascript,Javascript,内部JavaScript排序方法对数字数据进行排序-True或False?似乎排序不太好 [3,5,1,5,10,0,99,10,12].sort() [0, 1, 10, 10, 12, 3, 5, 5, 99] // result 但您可以轻松地将其排序为ok: [3,5,1,5,10,0,99,10,12].sort(function(a,b) {return parseInt(a) > parseInt(b)}) [0, 1, 3, 5, 5, 10, 10, 12, 99]

内部JavaScript排序方法对数字数据进行排序-True或False?

似乎排序不太好

[3,5,1,5,10,0,99,10,12].sort()
[0, 1, 10, 10, 12, 3, 5, 5, 99]  // result
但您可以轻松地将其排序为ok:

[3,5,1,5,10,0,99,10,12].sort(function(a,b) {return parseInt(a) > parseInt(b)})
[0, 1, 3, 5, 5, 10, 10, 12, 99] // result

看起来不太好

[3,5,1,5,10,0,99,10,12].sort()
[0, 1, 10, 10, 12, 3, 5, 5, 99]  // result
但您可以轻松地将其排序为ok:

[3,5,1,5,10,0,99,10,12].sort(function(a,b) {return parseInt(a) > parseInt(b)})
[0, 1, 3, 5, 5, 10, 10, 12, 99] // result
如果未提供compareFunction,则通过将元素转换为字符串并按字典(“字典”或“电话簿”,而不是数字)顺序比较字符串来对元素进行排序。例如,在字典顺序中,“80”排在“9”之前,但在数字排序中,9排在80之前

所以答案是错误的

如果未提供compareFunction,则通过将元素转换为字符串并按字典(“字典”或“电话簿”,而不是数字)顺序比较字符串来对元素进行排序。例如,在字典顺序中,“80”排在“9”之前,但在数字排序中,9排在80之前



所以答案是错误的。

试试看,在控制台中键入
[3,2,1,11].sort()
,或者看一看。你的问题是否缺少“只有数字数据”,因为你可以自己测试。测试的目的不是测试你知道的吗?我不敢相信我当时问了这么愚蠢的问题。Lol:)试试看,在控制台中键入
[3,2,1,11].sort()
,或者看看。你的问题是否缺少“仅数值数据”,因为你可以自己测试。测试的目的不是测试你所知道的吗?我不敢相信我当时问了这么愚蠢的问题。哈哈:)好吧,说得迂腐一点,它仍然对数字数据进行排序。只是不是以“预期”的方式。我不能否认这一点。好吧,为了学究,它仍然对数字数据进行排序。只是不是以“预期”的方式。我不能反驳这一点。比较函数应该返回
-1
0
1
。是否存在函数产生错误结果的情况?我认为这取决于算法如何处理相等的值。但是当
a
较小时,函数基本上会返回
0
,这意味着
a
b
相等。我找不到反例这一事实并不意味着您的方法将始终有效;)从技术上说你是对的。但是由于问题是关于对数值进行排序,因此我认为我们可以使用我的简单实现。如果一个数字不大于或小于,则这些数字是相同的;)另一个同样简单正确的函数是
函数(a,b){return parseInt(a)-parseInt(b);}
。比较函数应该返回
-1
0
1
。我的函数是否会产生错误的结果?我认为这取决于算法如何处理相等的值。但是当
a
较小时,函数基本上会返回
0
,这意味着
a
b
相等。我找不到反例这一事实并不意味着您的方法将始终有效;)从技术上说你是对的。但是由于问题是关于对数值进行排序,因此我认为我们可以使用我的简单实现。如果一个数字不大于或小于,则这些数字是相同的;)另一个同样简单和正确的函数是
函数(a,b){return parseInt(a)-parseInt(b);}