06.02.2013, 14:43
|
Профессор
|
|
Регистрация: 13.12.2012
Сообщений: 283
|
|
Требуется помощь
Не получается отсортировать по 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>
Последний раз редактировалось dima***, 06.02.2013 в 16:33.
|
|
06.02.2013, 15:11
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
<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, 06.02.2013 в 15:36.
|
|
06.02.2013, 15:16
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Deff,
а если Коля,7 Маша,7 ???
|
|
06.02.2013, 15:28
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
рони,
Поправил
|
|
06.02.2013, 15:29
|
Профессор
|
|
Регистрация: 13.12.2012
Сообщений: 283
|
|
А ещё какие решения будут?
|
|
06.02.2013, 15:39
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от dima***
|
А ещё какие решения будут?
|
Ща - профессор...
|
|
06.02.2013, 15:58
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
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>
Последний раз редактировалось рони, 22.03.2015 в 01:54.
Причина: замена массива
|
|
06.02.2013, 17:15
|
Профессор
|
|
Регистрация: 13.12.2012
Сообщений: 283
|
|
Мне совсем другое нужно!Не как сортировать элементы в массиве.
а отсортировать по 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>');
}
|
|
06.02.2013, 17:34
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от dima***
|
а отсортировать по sum и сделать таблицу.
|
Ну той жа моей методой пойдет ?
<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>
Последний раз редактировалось Deff, 06.02.2013 в 17:38.
|
|
06.02.2013, 17:37
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от dima***
|
Или хотя бы из этого массив сделать:
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>');
}
|
Этого не понял - покажите итоговый вид массива
|
|
|
|