Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   сортировка массива с сохранением ассоциации индексов (https://javascript.ru/forum/dom-window/7880-sortirovka-massiva-s-sokhraneniem-associacii-indeksov.html)

HelpeR 24.02.2010 10:29

сортировка массива с сохранением ассоциации индексов
 
Здравствуйте.
Как в js можно реализовать сортировку массива с сохранением ассоциации индексов.
var fruits = [];
fruits[0] = 'banana';
fruits[1] = 'apple';

и после сортировки получить такой результат

fruits[1] = 'apple';
fruits[0] = 'banana';

Kolyaj 24.02.2010 11:00

Порядок элементов в массиве определяется индексами. Исходя из этого, вы спрашиваете чушь.

Предупреждая упоминание for-in: использование for-in для перебора элементов массива противопоказано, т.к. эта конструкция перебирает свойства массива, а не его элементы.

Если так сильно нужны изначальные индексы, сохраните их до сортировки. Например
['banana', 'apple'].map(function(fruit, index) {
    return {index: index, fruit: fruit};
}).sort(function(fruit1, fruit2) {
    return fruit1.fruit < fruit2.fruit ? -1 : fruit1.fruit > fruit2.fruit ? 1 : 0;
})


Метода map у массивов в IE нет, но его можно там добавить.


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