Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 10.01.2018, 15:40
Профессор
Отправить личное сообщение для atanov Посмотреть профиль Найти все сообщения от atanov
 
Регистрация: 27.06.2016
Сообщений: 180

Цитата:
что они возвращают из функции 1 или -1 или 0 если up == true и -1, 1, 0 если up == false или не указан.
вариант использования
Позанудствую - а можете в "длинном" виде это написать?
Ответить с цитированием
  #12 (permalink)  
Старый 10.01.2018, 15:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

atanov,
функция сортировки должна возвращать три состония 1, -1, 0
ваша compare возвращала только 1 и 0, в этом и была проблема.
Ответить с цитированием
  #13 (permalink)  
Старый 10.01.2018, 15:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

atanov,
function compareNumeric(a, b) {
  if (a > b) if(up) {return 1} else {return -1};
  if (a < b) if(up) {return -1} else {return 1};
  return 0;//лишняя строка, функции без явного указания возврают false, что Array.sort воспринимает как ноль
}

Последний раз редактировалось рони, 10.01.2018 в 15:58.
Ответить с цитированием
  #14 (permalink)  
Старый 10.01.2018, 15:53
Профессор
Отправить личное сообщение для atanov Посмотреть профиль Найти все сообщения от atanov
 
Регистрация: 27.06.2016
Сообщений: 180

ОГРОМНОЕ СПАСИБО!!!!!!!!!!!!!!!!!!!
Ответить с цитированием
  #15 (permalink)  
Старый 10.01.2018, 16:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

универсальная сортировка строк
atanov,
сортирует числа и строки, достаточно указать индекс ячейки и направление сортировки (в примере первая колонка, возрастание)
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">


</head>

<body>
<table width="400" id="alltable" >
	<thead>
		<tr>
			<th>Title 1</th>
			<th>Title 2</th>
			<th>Title 3</th>
		</tr>
	</thead>
	<tbody>
	    <tr>
			<td>100</td>
			<td>B</td>
			<td>B</td>
		</tr>
		<tr>
			<td>300</td>
			<td>C</td>
			<td>C</td>
		</tr>
		<tr>
			<td>50</td>
			<td>A</td>
			<td>A</td>
		</tr>
	</tbody>
</table>
  <script>
function sorttable(table, index, up) {
  var tbody = table.querySelector("tbody");
  var rowsArray = [].slice.call(tbody.rows);
  var compare = function compareNumeric(a, b) {
    a = a.cells[index].textContent.trim();
    b = b.cells[index].textContent.trim();
    if(a == +a) return up ? a - b : b - a;
    if (a > b) {
      return up ? 1 : -1;
    }
    if (a < b) {
      return up ? -1 : 1;
    }
  };
  var temp = document.createDocumentFragment();
  rowsArray.sort(compare).forEach(function(a) {
    temp.appendChild(a);
  });
  tbody.appendChild(temp);
}
;

var table = document.querySelector("#alltable");
sorttable (table, 0,true)
  </script>
</body>
</html>
Ответить с цитированием
  #16 (permalink)  
Старый 10.01.2018, 17:51
Профессор
Отправить личное сообщение для atanov Посмотреть профиль Найти все сообщения от atanov
 
Регистрация: 27.06.2016
Сообщений: 180

рони, и опять же глобальное спасибо
Исчо тогда поспрашиваю.
1. В предпоследнем посте строка 45 "if (a > b) if(up)", два подряд ифа, это нормально? Я поначалу не обратил внимание на это. Если да, то как оно работает или где почитать об ентом?
2. В последнем посте .trim() - обязательно нужон? Да цифер понятно, но если строки, он вроде ничего не делает.
3. В последнем посте, стыдно спросить - в строке 45 '+a', что это?

Последний раз редактировалось atanov, 10.01.2018 в 17:53.
Ответить с цитированием
  #17 (permalink)  
Старый 10.01.2018, 18:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от atanov
3.
кустарная проверка, на то что данная строка, это число.
Сообщение от atanov
1.
так лучше ?
if (a > b) {if(up) {return 1} else {return -1}};

Сообщение от atanov
Да цифер понятно, но если строки
циферкам как раз пофигу на пробелы вначале конце, trim это на всякий случай
Ответить с цитированием
  #18 (permalink)  
Старый 10.01.2018, 18:10
Профессор
Отправить личное сообщение для atanov Посмотреть профиль Найти все сообщения от atanov
 
Регистрация: 27.06.2016
Сообщений: 180

Цитата:
так лучше ?
if (a > b) {if(up) {return 1} else {return -1}};
Ну конэчно!
Блин, чтож в учебниках не пишуть, вот хорошо, что Вы разжевали
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление строк в таблицу и скрытие таблицы. III Общие вопросы Javascript 39 20.11.2015 10:05
Динамическое удаление строк таблицы Tankist Events/DOM/Window 16 03.07.2013 16:42
Изменение окраски строк таблицы, исходя из данных? Space-06 Events/DOM/Window 4 14.02.2012 21:32
Вопрос по each() и перебору строк таблицы battrack jQuery 1 09.02.2012 14:30
Перемещение строк таблицы в Firefox barcelona jQuery 17 23.02.2009 15:41