JavaScript-内部JavaScript排序方法对数字数据进行排序-True还是False?
内部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]
[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);}
。