Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Требуется помощь (https://javascript.ru/forum/misc/35286-trebuetsya-pomoshh.html)

dima*** 06.02.2013 13:43

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

Deff 06.02.2013 14:11

<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>

рони 06.02.2013 14:16

Deff,
а если Коля,7 Маша,7 ???

Deff 06.02.2013 14:28

рони,
:) Поправил

dima*** 06.02.2013 14:29

А ещё какие решения будут?

Deff 06.02.2013 14:39

Цитата:

Сообщение от dima***
А ещё какие решения будут?

:lol:
Ща - профессор...

рони 06.02.2013 14:58

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>

dima*** 06.02.2013 16:15

: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>');
}

Deff 06.02.2013 16:34

Цитата:

Сообщение от 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 16:37

Цитата:

Сообщение от 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>');
}

:( Этого не понял - покажите итоговый вид массива


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