Как указал Блендер, объекты не заказываются. Вам нужно использовать массив. Существует несколько способов настроить этот массив, и как только вы получите данные в массиве, его очень легко отсортировать.
Вот несколько примеров. Во-первых, давайте попробуем сделать это массивом массивов. Внешний массив - это список элементов, и каждый элемент этого массива представляет собой массив из двух элементов, ваш ключ и ваше значение.
Так вставить этот код в вашу любимую консоль JavaScript, например, один в Chrome:
var data = [
[ '17', '17-17:30' ],
[ '20', '20:00-21' ],
[ '21', '21-22' ],
[ '22', '22-23' ],
[ '23', '23-24' ],
[ '01', '1-2' ],
[ '02', '2-3' ],
[ '03', '3-4' ],
[ '04', '4-5' ],
[ '05', '5-6' ],
[ '06', '6-7' ],
[ '07', '7-7:30' ],
[ '08', '08:50-9' ]
];
var result = data.slice().sort(function(a, b) {
return +a[0] - +b[0];
});
JSON.stringify(result, null, 4);
Он будет регистрировать:
[
[
"01",
"1-2"
],
[
"02",
"2-3"
],
[
"03",
"3-4"
],
[
"04",
"4-5"
],
[
"05",
"5-6"
],
[
"06",
"6-7"
],
[
"07",
"7-7:30"
],
[
"08",
"08:50-9"
],
[
"17",
"17-17:30"
],
[
"20",
"20:00-21"
],
[
"21",
"21-22"
],
[
"22",
"22-23"
],
[
"23",
"23-24"
]
Или, вместо массива массивов, вы можете используйте массив объектов. С этим часто удобнее работать. Вставьте этот код в консоли JavaScript:
var data = [
{ key: '17', value: '17-17:30' },
{ key: '20', value: '20:00-21' },
{ key: '21', value: '21-22' },
{ key: '22', value: '22-23' },
{ key: '23', value: '23-24' },
{ key: '01', value: '1-2' },
{ key: '02', value: '2-3' },
{ key: '03', value: '3-4' },
{ key: '04', value: '4-5' },
{ key: '05', value: '5-6' },
{ key: '06', value: '6-7' },
{ key: '07', value: '7-7:30' },
{ key: '08', value: '08:50-9'}
];
var result = data.slice().sort(function(a, b) {
return +a.key - +b.key;
});
JSON.stringify(result, null, 4);
Он зарегистрирует:
[
{
"key": "01",
"value": "1-2"
},
{
"key": "02",
"value": "2-3"
},
{
"key": "03",
"value": "3-4"
},
{
"key": "04",
"value": "4-5"
},
{
"key": "05",
"value": "5-6"
},
{
"key": "06",
"value": "6-7"
},
{
"key": "07",
"value": "7-7:30"
},
{
"key": "08",
"value": "08:50-9"
},
{
"key": "17",
"value": "17-17:30"
},
{
"key": "20",
"value": "20:00-21"
},
{
"key": "21",
"value": "21-22"
},
{
"key": "22",
"value": "22-23"
},
{
"key": "23",
"value": "23-24"
}
]
В любом случае, как вы можете видеть, когда у вас есть данные в соответствующем формате (то есть данные в целом должен быть массивом), тогда становится очень просто отсортировать его.
Давайте посмотрим на такого рода функции более подробно (с использованием второго примера):
var result = data.slice().sort(function(a, b) {
return +a.key - +b.key;
});
В этом коде a.key
получает значение для key
собственности одного из элементов массива. +
перед этим преобразует строку в число - так же, как с помощью функции Number
, но более простой способ сделать это. Аналогично для +b.key
. И затем вычитание этих двух чисел дает правильную функцию сортировки: положительное, отрицательное или нулевое значение в зависимости от того, является ли a.key
или b.key
более значительным из двух или если они равны.
Первый пример работает аналогично, только используя +a[0] - +b[0]
вместо +a.key - +b.key
.
.slice()
вызов в каждом примере делает копию массива. Вы можете опустить это, если хотите отсортировать исходный массив.
Объекты неупорядочены, поэтому нет возможности «сортировать» ключи. – Blender
@Blender никоим образом не вокруг? –