我发现使用没有比较函数的排序会导致错误的答案,我不知道原因。Javascript Array.prototype.sort()错误,没有比较功能
var a = [823564440,115438165,784484492,74243042,114807987,137522503,441282327,16531729,823378840,143542612]
a.sort()
a.sort((a,b) => a-b)
这两个应该在我的脑海中给出相同的结果,但他们没有。显然后者是正确的。
a.sort()
[114807987, 115438165, 137522503, 143542612, 16531729, 441282327, 74243042, 784484492, 823378840, 823564440]
a.sort((a, b) => a-b)
[16531729, 74243042, 114807987, 115438165, 137522503, 143542612, 441282327, 784484492, 823378840, 823564440]
有谁能告诉我背后的原因吗?
从[documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort):*默认的排序顺序是根据字符串的Unicode代码点。* – Li357
首先将项目比作字符串。 – zerkms
字符串排序与数字排序。 –