我有以下阵列数组排序没有如预期
temp = [1230, 900, 1000, 2130, 2400]
和使用temp.sort()
按值进行排序,看看它使用的console.log时,其给出以下
[1000, 1230, 2130, 2400, 900]
本应该做像
[900, 1000, 1230, 2130, 2400]
有什么不对或需要使用其他方法吗?
我有以下阵列数组排序没有如预期
temp = [1230, 900, 1000, 2130, 2400]
和使用temp.sort()
按值进行排序,看看它使用的console.log时,其给出以下
[1000, 1230, 2130, 2400, 900]
本应该做像
[900, 1000, 1230, 2130, 2400]
有什么不对或需要使用其他方法吗?
应该通过Unicode代码点顺序将它们转换为字符串和比较字符串使用如果没有提供compareFunction
,元素进行排序Array.prototype.sort()compareFunction
的
。例如,在数字排序中,9出现在80之前,但由于数字被转换为字符串,“80”以Unicode顺序出现在“9”之前。
var temp = [1230, 900, 1000, 2130, 2400];
temp.sort(function(a, b) {
return a - b;
})
snippet.log(temp)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
['Array.prototype.sort()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/数组/排序):“如果未提供compareFunction,则通过将元素转换为字符串并按Unicode代码点顺序比较字符串来排序元素。” – Andreas