Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   расставить в порядке убывания (https://javascript.ru/forum/misc/22006-rasstavit-v-poryadke-ubyvaniya.html)

melky 04.10.2011 12:28

я пошел через формирование хешей для связки значений первого массива с первым.

массив хешей получился таким
[{v:"width", i:18}, {v:"none", i:74}, {v:"color", i:6}, {v:"border", i:9}, {v:"after", i:32}, {v:"div", i:1}]

дальше я их просто сортирую и получаю это
[{v:"none", i:74}, {v:"after", i:32}, {v:"width", i:18}, {v:"border", i:9}, {v:"color", i:6}, {v:"div", i:1}]

и замещаю каждое значение V хеша в старом массиве.

var ss1=[18,74,6,9,32,1],
    ss2=["width","none","color","border","after","div"];

var res=[];

// формирование хешей.
ss1.map(function(v,i){ res[i]={ v : ss2[i], i : v } });

// сортировка хешей.
res.sort(function(a,b){return b.i-a.i});

// запись в старый массив новых значений
res.map(function(a,i){ss2[i]=a.v});

alert(ss2);



PS. ваый, :)

stopkran 04.10.2011 15:39

Чё-та не могу понять, зачем все делают массив tmp. Вроде как вот это работает:

var ss1=[18,74,6,9,32,1],
    ss2=["width","none","color","border","after","div"],
    cmp = function(a,b) {return a[1] - b[1]};

for (var i = 0, l = ss2.length; i < l; i ++) {
	ss2[i] = [ss2[i], ss1[i] || 0]
}

ss2.sort(cmp)

alert(ss2.join('; '))

stopkran 04.10.2011 15:43

melky,
у дураков мысли сходятся! :-) Только у тебя в alert [object Object] вылезет (я из-за этого не хэш новый сделал, а массив). Ну, то есть вылез бы, если бы как я делал, без tmp.

melky 04.10.2011 18:10

Цитата:

Сообщение от stopkran (Сообщение 129531)
Чё-та не могу понять, зачем все делают массив tmp.

Цитата:

Сообщение от stopkran (Сообщение 129533)
melky,у дураков мысли сходятся! :-)

fuck yeah. чоткая жизненная позиция - "кто не делает так, как я - неправ" :lol:



Цитата:

Сообщение от stopkran (Сообщение 129531)
Чё-та не могу понять, зачем все делают массив tmp. Вроде как вот это работает:

какая разница, создать хеш на одно действие, или приписать свойства в элементам массива?


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