Javascript: как сортировать массив числовых значений?
По умолчанию JS сортирует элементы массива в алфавитном порядке и как строки, так что код
var a = [8, 50, 200]; a.sort();
даст нам массив с порядком элементов 200, 50, 8
.
Решить проблему легко, передав в стандартную функцию sort
пользовательскую функцию сравнения элементов:
a.sort ( function(a,b) { return a - b; });
Ниже приводится более подробный листинг
документа .html
в кодировке Юникода utf-8, который показывает суть дела.
Отсортированный случайный массив из 1000 целочисленных элементов, значения которых попадают в интервал [1; 128]
, сортируется правильно, преобразуется в строку и выводится в раздел документа с идентификатором test
.
Для сортировки по убыванию замените return a - b
на return b - a
<!DOCTYPE HTML> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Integer Array Sorting</title> </head> <body> <div id="test"></div> <script> function randomInt (n1, n2) { //Случайное целое из интервала [n1,n2] return Math.floor(n1 + Math.random() * (n2 - n1 + 1)); } var a = []; for (var i=0; i<1000; i++) a.push(randomInt(1,128)); //заполнение document.getElementById('test').innerHTML = a.sort ( function(a,b) { return a - b; }).join(' '); //сортировка и вывод </script> <noscript>Нужен включённый в браузере Javascript для работы приложения!</noscript> </body> </html>
05.10.2019, 13:57 [1461 просмотр]