Сортировка двух массивов
Есть два массива
prices= [500, 300, 400, 700]; names = ['product1', 'product2', 'product3', 'product4']; Надо сортировать массив prices по убыванию, чтобы массив names тоже был сортирован таким же образом результат должен быть [700, 500, 400, 300] и ['product4', 'product1', 'product3', 'product2'] |
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) |
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]) |
Большое спасибо
|
krutoy,
и зачем эти пляски, чтоб код запутать и сделать длиннее ... :( |
рони,
Я когда постил, не видел твой вариант. Твой круче, я не спорю. Просто я новичек, и многого не знаю. А мне в голову пришла именно такая реализация. Удалять не буду, так как кому-то мой вариант может показаться ясней и прозрачней. |
kazali,
Может, правильнее держать один массив с объектами (название, цена)? А то потом еще какие-то параметры добавятся.. |
Часовой пояс GMT +3, время: 20:26. |