Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сортировка нескольких массивов (https://javascript.ru/forum/misc/14938-sortirovka-neskolkikh-massivov.html)

PAMAC 06.02.2011 17:08

Сортировка нескольких массивов
 
Здравствуйт!
Есть 4 массива:
var ar1 = new Array(1,2,4,5,7);
var ar2 = new Array(30,80,60,90,10);
var ar3 = new Array(0,0,1,0,1);
var ar4 = new Array(4,5,3,2,1);


Нужно отсортировать массив ar2 по убыванию так, чтобы и элементы в других массивах соответственно изменились. Ну чтобы получилось следующее:
var ar1 = new Array(7,1,4,2,5);
var ar2 = new Array(10,30,60,80,90);
var ar3 = new Array(1,0,1,0,0);
var ar4 = new Array(1,4,3,5,2);


Как такое можно реализовать? Есть страндартная функция?

Gvozd 06.02.2011 17:32

гораздо проще будет, если вы сформируете из этих массивов, массив массивов, соответсвенно столбцам
var temp = [
[1,30,0,4],
[2,80,0,5],
[4,60,1,3],
[5,90,0,2],
[7,10,1,1]
];

такой массив уже красиво сортируется с помощью стандартного .sort

PAMAC 06.02.2011 19:15

Не спорю. Но мне нужно именно 4 массива. Их можно отсортировать так, как я хочу стандартными функциями? Или придётся писать свою?

ksa 06.02.2011 23:31

Цитата:

Сообщение от PAMAC
Есть 4 массива

Что хранится в те 4-х массивах? Почему они так связаны между собой?

Цитата:

Сообщение от PAMAC
Но мне нужно именно 4 массива.

Почему? :)

Цитата:

Сообщение от PAMAC
Есть страндартная функция?

Нет такой стандартной функции которая бы, сортируя один массив, переставляла элементы в других массивах...

B@rmaley.e><e 07.02.2011 14:55

В чем необходимость именно 4-х массивов - непонятно. Гораздо проще использовать пары ключ-значение и сортировать по ключу. Т.е.
var arr = [{key: 1, value: [1,2,3,4]}, {key: 3, value: [3,5,1,0]}, {key: 0, value: [0,0,7,7]}];
arr.sort(function(a, b){return a.key - b.key});
alert( JSON.stringify(arr) )


P.S. Вы говорите, что ar2 нужно отсортировать по убыванию, а в следующем примере он отсортирован по возрастанию.


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