reactjs - 在 html-table 中对美国格式的列进行排序
问题描述
我正在使用 html-table 来显示数据。我的表中有一个名为的列Charges
,它以美国格式显示货币。数据来自数组集合patientsSearchData
。(我想在单击图标时对费用进行升序和降序排序)
示例列格式
new Intl.NumberFormat('en-USD', { currency: 'USD', style: 'currency' }).format(Number(Item.Charges))
以上代码用于美元格式。
费用来自字符串格式的数组
例如:
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-table 中的外观如下所示:
1,416.20 美元
187.17 美元
42.82 美元
807.21 美元
实际上我需要的是:
42.82 美元
187.17 美元
807.21 美元
1,416.20 美元
解决方案
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');
}
推荐阅读
- nginx - Chromecast 的正确标题
- sparql - dbpedia 中的自由文本搜索
- c - C UDP 客户端服务器不工作
- .htaccess - Htaccess重写规则joomla 3
- c# - 如何在 C# 中启用 HTML 标签的使用
- python - 如何在我的班级中设置一个默认字段,以便在 Django Rest 迁移到我的 sqlite 数据库?
- ios - Swift - 可选属性的 JSON 序列化
- network-programming - Ansible 路由器模板生成器 - vars_prompt 的问题
- python-3.x - 底图不显示绘制的数据(如果完全绘制)
- java - SOAP - 空体