Сортировка столбца в формате USD в html-таблице - PullRequest
1 голос
/ 11 октября 2019

Я использую html-таблицу для отображения данных. В моей таблице есть столбец с именем Charges, который показывает валюту в формате USD. Данные поступают из массива коллекции patientsSearchData. (Я хочу отсортировать сборы по возрастанию и по убыванию при нажатии на значок)

Пример формата столбца

enter image description here

 new Intl.NumberFormat('en-USD', { currency: 'USD', style: 'currency' }).format(Number(Item.Charges))

Код вышеиспользуется для формата USD.

Заряды поступают из массива в строковом формате

Например:

var обязанности = ["1 416,20", "807,21", "42,82", "187,17"]

Я применил сортировку:

sort(event) {
        const {patientsSearchData } = this.state;
        const { SearchList } = this.props;
        var search = [];
        if (SearchList.length == 0) {
                search = _.orderBy(patientsSearchData, (o) => typeof o[event.target.id] === 'string' ? o[event.target.id].trim().toLowerCase() : o[event.target.id], order[event.target.id] ? 'asc' : 'desc');
                this.setState({
                orderby: event.target.id,
                patientsSearchData: search,
            });
        }

После сортировки (в порядке возрастания) и применения формата USD, как это выглядит в html-таблице, показано ниже:

$ 1 416,20

$ 187,17

$ 42,82

$ 807,21

Что на самом деле мне нужно:

42,82

187,17

807,21

1 416,20

1 Ответ

1 голос
/ 11 октября 2019

Я сделал еще одну проверку в функции sort, если значение в массиве содержит только цифры или десятичные точки.

else if (event.target.id === 'Charges'){
                search = _.orderBy(patientsSearchData, (o) => o[event.target.id].match(/^\d+(\.\d+)?$/) ? Math.floor(o[event.target.id]) : o[event.target.id], order[event.target.id] ? 'asc' : 'desc');
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...