Требуется помощь
Не получается отсортировать по 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, время: 04:54. |