Primeng: сортировка данных, которые содержат '-' - PullRequest
0 голосов
/ 22 октября 2018

Я использую primeNg <p-dataTable> для реализации пользовательской сортировки для поля "Row No:".

Значения в поле номера строки будут такими, как показано ниже:

9864-3
4738-1
0935-4
2788-2

Источник: https://primefaces.org/primeng/#/table/sort

Для сортировки данных я сделал ниже код:

HTML:

<p-dataTable  (onSort)="changeSort($event)">
        <p-column field="rowNo" header="Row No:" [sortable]="true">{{value}}</p-column>
</p-dataTable>

TS:

changeSort(event) {
        if (!event.order) {
          this.sortF = 'year';
        } else {
          this.sortF = event.field;
        }
    }

Но это не таксортировка не происходит, я не получаю никакой ошибки и данные не сортируются.Подскажите, пожалуйста, как отсортировать данные, которые содержат -?

1 Ответ

0 голосов
/ 22 октября 2018

Я попытался создать очень простую пользовательскую функцию сортировки, которая сортирует в соответствии с вашей спецификацией

По сути, вы можете отсортировать список чисел, например arr.sort((a,b) => parseInt(a) - parseInt(b)).Но здесь проблема в том, что parseInt вычитает число, так как 9864-3 приведет к 9861, а затем вычитает следующее число и выдает результат.

В любом случае, пользовательская функция:

data = ["0935-4", "0935-4", "0935-2", "4738-1", "9864-3"];

customSort(data) {
 let arr = [];
 data.map(c => {
 let index = c.indexOf('-');
 let d = c.split('');
 d.splice(index, 1);
 arr.push(d.join(''))
 })
 arr.sort((a,b) => parseInt(a) - parseInt(b))// ascending
 // arr.sort((a,b) => parseInt(b) - parseInt(a)) descending
 let temp2 = [];
 arr.map(val => {
  temp2.push(val.slice(0, 4) + "-" + val.slice(4));
 })
  this.data = [...temp2];
  console.log(this.data)
}

Надеюсь, что это может помочь вам или дать вам идею сделать это самостоятельно

...