Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Сортировка в таблице (https://javascript.ru/forum/events/31785-sortirovka-v-tablice.html)

hoax 20.09.2012 17:48

Сортировка в таблице
 
Всем привет, хочу давно ужу учусь по вашему учебнику, и возникают вопросы, вот мне сейчас надо сделать сортировку на сайте, но по данному примере http://learn.javascript.ru/play/tuto...ort/index.html

Мне непонятен сам принцип сортировки, а именно этот код

var compare;

        switch(type) {
          case 'number':
            compare = function(rowA, rowB) {
              return rowA.cells[colNum].innerHTML - rowB.cells[colNum].innerHTML;
            };
            break;
          case 'string':
            compare = function(rowA, rowB) {
              return rowA.cells[colNum].innerHTML > rowB.cells[colNum].innerHTML ? 1 : -1;
            };
            break;
        }


Вот скажите, что в данной ф-ии function(rowA, rowB) является параметром? И как вычисляется сама сортировка? В данном случае это

return rowA.cells[colNum].innerHTML - rowB.cells[colNum].innerHTML;

Заранее спасибо, сорь если не в том разделе создал, в учебника у вас давно, а на форум почти не заходит.

hoax 20.09.2012 19:31

хелп ребятки

cyber 20.09.2012 23:35

http://javascript.ru/Array/sort

cyber 20.09.2012 23:40

и вот еще http://learn.javascript.ru/compariso...е-строк

hoax 20.09.2012 23:48

ммм это понятно

а что просиходит именно здесь?


rowA.cells[colNum].innerHTML - rowB.cells[colNum].innerHTML;

номер ячеек1 - номер ячеек2?

cyber 20.09.2012 23:50

function compare (a, b) {
// a = 11; b = 10;

return a - b;//11 - 10 = 1  значит "а" больше
}

hoax 21.09.2012 00:01

Хммм... что-то не очень соображаю, что именно просходит с ячейками?

rowA.cells[colNum].innerHTML - rowB.cells[colNum].innerHTML;


Понимаю это так

ПараметрА.ячейки.[номер ячейки в строке (в данном случае - 0)].написать - (тоже самое)

cyber 21.09.2012 00:17

Цитата:

Сообщение от hoax (Сообщение 205641)
Хммм... что-то не очень соображаю, что именно просходит с ячейками?

rowA.cells[colNum].innerHTML - rowB.cells[colNum].innerHTML;


Понимаю это так

ПараметрА.ячейки.[номер ячейки в строке (в данном случае - 0)].написать - (тоже самое)

function sortFunction(a, b){
  if(a меньше, чем b по некоторому критерию)
     return -1 // Или любое число, меньшее нуля
  if(a больше, чем b по некоторому критерию)
     return 1  // Или любое число, большее нуля
  // в случае а = b вернуть 0
  return 0
}

hoax 02.10.2012 14:54

а - это все числа меньше нуля
б - больше нуля?

Skipp 02.10.2012 15:04

var compare;

        switch(type) {  // В свич передаётся тип переменной
          case 'number': // Если переменная число
            compare = function(rowA, rowB) { // Тогда мы переменной compare присваиваем анонимную функцию
              return rowA.cells[colNum].innerHTML - rowB.cells[colNum].innerHTML; // Которая возвращает разницу между ячейками rowA.cells[colNum] и rowB.cells[colNum]
            };
            break;
          case 'string': // Если тип переменной строка
            compare = function(rowA, rowB) { // Тогда мы переменной compare присваиваем другую анонимную функцию
              return rowA.cells[colNum].innerHTML > rowB.cells[colNum].innerHTML ? 1 : -1; // Где если rowA.cells[colNum] больше rowB.cells[colNum] то функция возвращает 1, в противном случаи -1
            };
            break;
        }


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