Между ними существующие ответы говорят вам все, но ни один из них не упоминает обе проблемы в вашем коде. Вот полный ответ:
Сортировка не выполняет то, что вы хотите, потому что сортировка по умолчанию является лексической (то есть элементы массива преобразуются в строки и сравниваются в алфавитном порядке). Вы можете предоставить собственную функцию сравнения для sort()
:
x.sort(function(a, b) {
return a - b;
});
Во-вторых, for...in
фактически не говорит вам ничего конкретного о том, правильно ли отсортирован ваш массив, потому что перечисление for...in
не определено (хотя большинство, но не все браузеры делают в целом то, что вы ожидаете). Вместо этого используйте цикл for
(как обычно для массивов):
for (var i = 0, len = x.length; i < len; ++i) {
alert(x[i]);
}