sort()不起作用

时间:2017-09-27 10:13:38

标签: javascript sorting

我使用sort()对表格进行排序,但我不明白为什么它不起作用。你有个主意吗?

var tab = [5, 15, 17, 3, 8, 11, 28, 6, 55, 7];
tab = tab.sort();

for (var i = 0; i < tab.length; i++) {
  $("p").append(" ", tab[i]);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p></p>

https://jsfiddle.net/1423tLwd/

2 个答案:

答案 0 :(得分:2)

默认情况下,sort方法将按字母顺序对已调用的数组进行排序。

要解决此问题,您需要传递sort一个回调函数,该函数将按元素的数值对元素进行排序。

要实现此目的,您需要执行以下操作:

&#13;
&#13;
function sortNumber(a, b) {
  return a - b;
}

let tab = [5, 15, 17, 3, 8, 11, 28, 6, 55, 7];
let sortedTab = tab.sort(sortNumber);
console.log(sortedTab);
&#13;
&#13;
&#13;

答案 1 :(得分:-1)

MDN web docs中解释:

  

默认排序顺序是根据字符串Unicode代码点。

也就是说,您应该为sort提供比较数组元素的函数,否则,您的数组将根据字符串Unicode代码点进行排序。

这应该有效(按升序排序):

function compareFunction(a, b) {
  return a - b;
}

// sort tab array using compareFunction to compare elements
tab.sort(compareFunction);