Требуется помощь
Не получается отсортировать по sum и сделать таблицу.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Документ без названия</title> </head> <body> <script> function sum(b,c){ a=+arr[i][1]+(+arr[i][2]); return a; } function pro(b,c){ a=+arr[i][1]*(+arr[i][2]); return a; } function raz(b,c){ a=+arr[i][1]-(+arr[i][2]); return a; } var arr=[ ["Петя",9,3], ["Маша",8,5], ["Коля",7,3], ["Вася",6,1] ]; for(i=0;i<arr.length;i++){ u=(i+1)+','+arr[i][0]+','+sum(arr[i][0])+','+pro(arr[i][0])+','+raz(arr[i][0]); document.write(u+'<br>'); } </script> </body> </html> |
<script type="text/javascript"> var arr=[ ["Петя",9,3], ["Маша",7,5], ["Коля",11,3], ["Вася",10,1] ]; var obj={}; var j=0; for(i=0;i<arr.length;i++){ obj[''+arr[i][1]+''+(10000000+j)]=arr[i];j++ } j=0; for(i in obj){ arr[j]=obj[i];j++; } document.write(arr.join('<br/>')) </script> |
Deff,
а если Коля,7 Маша,7 ??? |
рони,
:) Поправил |
А ещё какие решения будут?
|
Цитата:
Ща - профессор... |
dima***,
Снова да ладом ... <!DOCTYPE HTML> <html> <head> <title></title> <meta charset="utf-8" /> </head> <body> <script type="text/javascript"> var arr=[ [53,"2015-03-18 09:53:33","Super User"], [63,"2015-03-21 17:30:00","Super User"], [53,"2015-03-18 09:53:33","Super User"], [62,"2015-03-21 10:52:41","test"], [56,"2015-03-18 15:57:33","Super User"], [61,"2015-03-19 18:53:16","Super User"], [51,"2015-03-18 09:16:00","Super User"], [60,"2015-03-19 18:53:04","Super User"], [57,"2015-03-18 16:00:40","Super User"], [58,"2015-03-18 16:01:46","Super User"], [59,"2015-03-18 16:48:52","Super User"] ]; //функция для вывода результата для теста function show( arr, str) { str = str || ''; var html = str + "<br />"; for (var i=0; i<arr.length; i++) { html+=arr[i].join()+"<br />" } return html+"<br />" } //без сортировки document.write(show(arr,'без сортировки')) //функция для сортировки function s(a, b) { return function(c, d) { return c[a] < d[a] ? b ? 1 : -1 : c[a] > d[a] ? b ? -1 : 1 : 0 } }; //сортируем по первому полю 0 arr.sort(s(0)) document.write(show(arr,'по первому полю')) //сортируем по первому полю 0 убывание arr.sort(s(0, true)) document.write(show(arr,'по первому полю убывание')) //сортируем по второму полю 1 arr.sort(s(1)) document.write(show(arr, 'по второму полю')) //сортируем по второму полю 1 убывание arr.sort(s(1, true)) document.write(show(arr, 'по второму полю убывание')) //сортируем по третьему полю 2 arr.sort(s(2)) document.write(show(arr, 'третьему полю')) //сортируем по третьему полю 2 arr.sort(s(2,true)) document.write(show(arr, 'третьему полю убывание')) </script> </body> </html> |
:no: Мне совсем другое нужно!Не как сортировать элементы в массиве.
а отсортировать по sum и сделать таблицу. Или хотя бы из этого массив сделать: for(i=0;i<arr.length;i++){ u=(i+1)+','+arr[i][0]+','+sum(arr[i][0])+','+pro(arr[i][0])+','+raz(arr[i][0]); document.write(u+'<br>'); } |
Цитата:
<script type="text/javascript"> var arr=[ ["Петя",9,3], ["Маша",8,5], ["Коля",11,3], ["Вася",10,1] ]; var obj={}; var j=0; for(i=0;i<arr.length;i++){ obj[''+(arr[i][1]+arr[i][2])+''+(10000000+j)]=arr[i];j++ } j=0; for(i in obj){ arr[j]=obj[i];j++; } document.write(arr.join('<br/>')) </script> |
Цитата:
|
1,Маша,13,40,3
2,Петя,12,27,6 3,Коля,10,21,4 4,Вася,7,6,5 |
dima***,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Документ без названия</title> </head> <body> <script> function sum(i){ var a=arr[i][1]+arr[i][2]; return a; } function pro(i){ var a=arr[i][1]*arr[i][2]; return a; } function raz(i){ var a=arr[i][1]-arr[i][2]; return a; } var arr=[ ["Петя",9,3], ["Маша",8,5], ["Коля",7,3], ["Вася",6,1] ]; var arr_new = [] for(i=0;i<arr.length;i++){ arr_new[i] = [arr[i][0],sum(i),pro(i),raz(i)] } arr_new.sort(function (a, b) { return b[1] - a[1] }) document.write(arr_new.join('<br />')) </script> </body> </html> |
Всё!!!То,что нужно!!!
:dance: Не знал,что так можно создавать массивы: var arr_new = [] for(i=0;i<arr.length;i++){ arr_new[i] = [arr[i][0],sum(i),pro(i),raz(i)] Рони,Спасибо,огромное!!! Deff,спасибо за новый способ сортировки-никогда,такой не видел! |
Сделал может кому пригодится
// Функции сортировки по id function sIdAsc(a, b) { if (a[0] > b[0]) return 1; else if (a[0] < b[0]) return -1; else return 0; } function sIdDesc(a, b) { if (a[0] < b[0]) return 1; else if (a[0] > b[0]) return -1; else return 0; } // Функции сортировки по дате function sDateAsc(a, b) { if (a[1] > b[1]) return 1; else if (a[1] < b[1]) return -1; else return 0; } function sDateDesc(a, b) { if (a[1] < b[1]) return 1; else if (a[1] > b[1]) return -1; else return 0; } // Функции сортировки по имени function sNameAsc(a, b) { if (a[2] > b[2]) return 1; else if (a[2] < b[2]) return -1; else return 0; } function sNameDesc(a, b) { if (a[2] < b[2]) return 1; else if (a[2] > b[2]) return -1; else return 0; } console.log('Фильт по id убывание'); sorting.sort(sIdAsc); console.log(sorting.join('\n')); console.log('Фильт по Date убывание'); sorting.sort(sDateAsc); console.log(sorting.join('\n')); console.log('Фильт по Name убывание'); sorting.sort(sNameAsc); console.log(sorting.join('\n')); console.log('Фильт по id возрастание'); sorting.sort(sIdDesc); console.log(sorting.join('\n')); console.log('Фильт по Date возрастание'); sorting.sort(sDateDesc); console.log(sorting.join('\n')); console.log('Фильт по Name возрастание'); sorting.sort(sNameDesc); console.log(sorting.join('\n')); console.log('------------------------'); То что имеем на выходе Изначальный массив 53,2015-03-18 09:53:33,Super User 63,2015-03-21 17:30:00,Super User 53,2015-03-18 09:53:33,Super User 62,2015-03-21 10:52:41,test 56,2015-03-18 15:57:33,Super User 61,2015-03-19 18:53:16,Super User 51,2015-03-18 09:16:00,Super User 60,2015-03-19 18:53:04,Super User 57,2015-03-18 16:00:40,Super User 58,2015-03-18 16:01:46,Super User 59,2015-03-18 16:48:52,Super User Фильт по id убывание 51,2015-03-18 09:16:00,Super User 53,2015-03-18 09:53:33,Super User 53,2015-03-18 09:53:33,Super User 56,2015-03-18 15:57:33,Super User 57,2015-03-18 16:00:40,Super User 58,2015-03-18 16:01:46,Super User 59,2015-03-18 16:48:52,Super User 60,2015-03-19 18:53:04,Super User 61,2015-03-19 18:53:16,Super User 62,2015-03-21 10:52:41,test 63,2015-03-21 17:30:00,Super User Фильт по Date убывание 51,2015-03-18 09:16:00,Super User 53,2015-03-18 09:53:33,Super User 53,2015-03-18 09:53:33,Super User 56,2015-03-18 15:57:33,Super User 57,2015-03-18 16:00:40,Super User 58,2015-03-18 16:01:46,Super User 59,2015-03-18 16:48:52,Super User 60,2015-03-19 18:53:04,Super User 61,2015-03-19 18:53:16,Super User 62,2015-03-21 10:52:41,test 63,2015-03-21 17:30:00,Super User Фильт по Name убывание 58,2015-03-18 16:01:46,Super User 51,2015-03-18 09:16:00,Super User 53,2015-03-18 09:53:33,Super User 56,2015-03-18 15:57:33,Super User 57,2015-03-18 16:00:40,Super User 53,2015-03-18 09:53:33,Super User 59,2015-03-18 16:48:52,Super User 60,2015-03-19 18:53:04,Super User 61,2015-03-19 18:53:16,Super User 63,2015-03-21 17:30:00,Super User 62,2015-03-21 10:52:41,test Фильт по id возрастание 63,2015-03-21 17:30:00,Super User 62,2015-03-21 10:52:41,test 61,2015-03-19 18:53:16,Super User 60,2015-03-19 18:53:04,Super User 59,2015-03-18 16:48:52,Super User 58,2015-03-18 16:01:46,Super User 57,2015-03-18 16:00:40,Super User 56,2015-03-18 15:57:33,Super User 53,2015-03-18 09:53:33,Super User 53,2015-03-18 09:53:33,Super User 51,2015-03-18 09:16:00,Super User Фильт по Date возрастание 63,2015-03-21 17:30:00,Super User 62,2015-03-21 10:52:41,test 61,2015-03-19 18:53:16,Super User 60,2015-03-19 18:53:04,Super User 59,2015-03-18 16:48:52,Super User 58,2015-03-18 16:01:46,Super User 57,2015-03-18 16:00:40,Super User 56,2015-03-18 15:57:33,Super User 53,2015-03-18 09:53:33,Super User 53,2015-03-18 09:53:33,Super User 51,2015-03-18 09:16:00,Super User Фильт по Name возрастание 62,2015-03-21 10:52:41,test 58,2015-03-18 16:01:46,Super User 61,2015-03-19 18:53:16,Super User 60,2015-03-19 18:53:04,Super User 59,2015-03-18 16:48:52,Super User 63,2015-03-21 17:30:00,Super User 57,2015-03-18 16:00:40,Super User 56,2015-03-18 15:57:33,Super User 53,2015-03-18 09:53:33,Super User 53,2015-03-18 09:53:33,Super User 51,2015-03-18 09:16:00,Super User ------------------------ |
Telnet,
вам дали универсальную универсальную функцию в 7 посте -- зачем плодить 6 функций вместо одной? |
Часовой пояс GMT +3, время: 06:42. |