Сортировка данных - как игнорировать текст в столбце? - PullRequest
0 голосов
/ 29 марта 2020

Я использовал этот скрипт для сортировки данных и игнорирования текста, который я не хочу сортировать, я объясню.

это пример столбца:

10,836
↑(10.71%)
14,836
↑(13.71%)

I хочу игнорировать это: ↑ (10,71%) и сортировать по этому: 10 836.

Вот мой сценарий:

jQuery.extend(jQuery.fn.dataTableExt.oSort, {
  "justNum-pre": a => parseFloat(a.replace(/\D/g, "")),
  "justNum-asc": (a, b) => a - b,
  "justNum-desc": (a, b) => b - a
});
$(document).ready(function () {
  var table = $('#dataTable').DataTable({
      order: [[ 1, "desc" ]],
      scrollY: 200,
      scrollX: false,
      responsive: true,
      paging: false,
      //colReorder: true,
      //pageLength: 100,
      columns: [
          {
              "render": function(data, type, row){
                  return data.split(" ").join("<br/>");
              }
          },
          null,
          null,
          null,
          null,
          null,
          null
      ],
      columnDefs: [
      { className: "all", "targets": [ 0, 1, 3, 6 ] },
      {
        type: 'justNum',
        targets: 1
      }
      ]
  });
});

1 Ответ

0 голосов
/ 29 марта 2020

Вы можете сделать это, используя функцию DataTables orderData .

Например, предположим, что ваши отформатированные данные находятся в первом столбце:

10,836
↑(10.71%)

Добавьте вторую столбец, содержащий только цифру c часть (без текста) 10836 и определите его как скрытый столбец.

Затем создайте раздел columnDefs в своем определении данных - что-то вроде этого:

$('#demo').DataTable( {
    "columnDefs": [
      { "orderData": [ 1 ], "targets": 0 },
      { "visible": false, "targets": 1 }
    ]
  } );

} );

Это говорит о том, что первый столбец (целевой индекс 0) будет использовать данные во втором столбце (целевой индекс 1) для сортировки. А второй столбец будет скрытым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...