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

kazali 15.11.2014 09:37

Сортировка двух массивов
 
Есть два массива
prices= [500, 300, 400, 700];
names = ['product1', 'product2', 'product3', 'product4'];
Надо сортировать массив prices по убыванию, чтобы массив names тоже был сортирован таким же образом
результат должен быть
[700, 500, 400, 300] и ['product4', 'product1', 'product3', 'product2']

рони 15.11.2014 09:59

kazali,
var prices = [500, 300, 400, 700],
    names = ['product1', 'product2', 'product3', 'product4'],
    temp = {};
for (var i = 0; i < names.length; i++) {
    temp[names[i]] = prices[i]
};
names.sort(function(a, b) {
    return temp[b] - temp[a]
});
prices.sort(function(a, b) {
    return b - a
});
alert(prices + '\n' + names)

krutoy 15.11.2014 10:08

prices= [500, 300, 400, 700];
names = ['product1', 'product2', 'product3', 'product4'];

binding={}
 for (i in prices){
  if(prices.hasOwnProperty(i))
  binding[prices[i]]=names[i]
}
delete i
binding=[].sort.apply(binding)

prices=[]
names=[]
for(i in binding){
if(binding.hasOwnProperty(i)){
   prices.push(i)
   names.push(binding[i])
 }
}
delete i

names=names.reverse()
prices=prices.reverse()
alert([prices, names])

kazali 15.11.2014 10:14

Большое спасибо

рони 15.11.2014 10:31

krutoy,
и зачем эти пляски, чтоб код запутать и сделать длиннее ... :(

krutoy 15.11.2014 10:38

рони,
Я когда постил, не видел твой вариант. Твой круче, я не спорю. Просто я новичек, и многого не знаю. А мне в голову пришла именно такая реализация. Удалять не буду, так как кому-то мой вариант может показаться ясней и прозрачней.

Яростный Меч 15.11.2014 18:29

kazali,
Может, правильнее держать один массив с объектами (название, цена)?
А то потом еще какие-то параметры добавятся..


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