Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сортировка массива с сохранением ключей (https://javascript.ru/forum/misc/68665-sortirovka-massiva-s-sokhraneniem-klyuchejj.html)

denis82 30.04.2017 20:02

Сортировка массива с сохранением ключей
 
Добрый день.

Подскажите кому не лень. Вроде задача тривиальная, но что-то не допереть, а поиском не нашел.

Требуется отсортировать массив по алфавиту с сохранением ключей. Допустим массив такой:
models[79][19709] = 'Creta';
models[79][19701] = 'Coupe';
models[79][19725] = 'ix35';

Применяю сортировку по алфавиту
models[79].sort();

Но ключи не сортируются, то есть после сортировки массив имеет вид:
models[79][0] = 'Coupe';
models[79][1] = 'Creta';
models[79][2] = 'ix35';

а должно быть
models[79][19701] = 'Coupe';
models[79][19709] = 'Creta';
models[79][19725] = 'ix35';

рони 30.04.2017 20:23

denis82,
у вас наверно обьект, а не массив

denis82 02.05.2017 12:02

Нет, ассоциативный массив.

laimas 02.05.2017 12:32

Цитата:

Сообщение от denis82
ассоциативный массив

Нет в JS ассоциативных массивов.

denis82 02.05.2017 12:55

https://learn.javascript.ru/object
Объект как ассоциативный массив, который нужно отсортировать по значению, но с сохранением ключей.

рони 02.05.2017 12:59

denis82,
нет сортировки обьекта в js, попробуйте уточнить данные и задачу.

laimas 02.05.2017 13:07

denis82,
[19701 => 'Coupe', 19709 => 'Creta', 19725 => 'ix35'], это не ассоциативный, а индексный массив. В JS, это будет объект, метода sort() у него нет.

denis82 02.05.2017 13:09

Ну хорошо, а как сортировать его?

рони 02.05.2017 13:20

denis82,
превратить массив(у вас массив длиной 19725) в обьект с длиной 3 и написать функцию чтобы выдавала вам данные в том виде каком нужно.

рони 02.05.2017 13:21

если в строке 3 будет обьект, то сортировка выкинет ошибку
<script>
var models = {};
models[79] = [];

models[79][19709] = 'Creta';
models[79][19701] = 'Coupe';
models[79][19725] = 'ix35';
models[79].sort();
alert(models[79]);
</script>


Часовой пояс GMT +3, время: 02:43.