Сортировка таблицы по TD, кроме первых двух столбцов

#javascript #jquery #sorting

#javascript #jquery #сортировка

Вопрос:

У меня довольно сложная проблема сортировки таблицы цен, которая должна быть отсортирована по столбцам, а не по строкам.

Проблема в несортированной таблице:

 <table>
   <tbody>
      <tr>
         <td></td>
         <td>Cheapest</td>
         <td>Option 1</td>
         <td>Option 2</td>
         <td>Option 3</td>
          <td>Option 4</td>
          <td>Option 5</td>
      </tr>
      <tr>
         <td>Price 1</td>
         <td data-price="20.82">€ 20,82</td>
         <td data-price="100.95">€ 100,95</td>
         <td data-price="300.20">€ 300,20</td>
         <td data-price="0"></td>
          <td data-price="158.72">€ 158,72</td>
          <td data-price="0"></td>
      </tr>
      <tr>
         <td>Price 2</td>
         <td data-price="55.66">€ 55,66</td>
         <td data-price="100.95">€ 100,95</td>
         <td data-price="0"></td>
         <td data-price="128.72">€ 128,72</td>
         <td data-price="158.72">€ 158,72</td>
         <td data-price="105.22">€ 105,22</td>
      </tr>
    </tbody>
</table>
  

Что мне нужно выполнить:

  • Таблица должна быть отсортирована слева направо (столбцы)
  • Первые два столбца должны оставаться на своих позициях (не сортировать)
  • Значение, подлежащее сортировке, находится в атрибуте data-price
  • Пустое значение заменяется значением 0 и должно быть в конце
  • Если имеется несколько пустых значений, они должны быть отсортированы по значению второй строки

Я создал скрипку, чтобы показать желаемый результат и объяснить немного больше

Я нашел достаточно решений для сортировки по строкам или td только по одной единственной строке. Я не могу понять эту сложную задачу.

Комментарии:

1. У вас более 1 строки, но сортировка столбца зависит только от data-price количества ячеек в одной строке, так что, похоже, мы можем отсортировать столбец на основе любой строки ? В противном случае сортировка может быть сложной, например, в первой строке у нас должен 5,3,7,2 быть порядок 2, 3, 5, 7 , но при таком отсортированном порядке вторая строка может иметь 4,3,5,7 то, что вообще не находится в порядке возрастания (так и должно быть 3, 4, 5, 7 ). Похоже, ваши данные должны быть согласованными, чтобы избежать такого случая.

2. Сортировка должна происходить только в первой строке с ценой данных. Однако в первых строках есть несколько пустых значений (0). Только пустые столбцы должны быть отсортированы по ВТОРОЙ строке. (См. JSFiddle)