要用react构建我的网站的表,我使用的是"react-bootstrap-table-next“。有了这个库,如果数字是整数或浮动的英语格式,我就可以构建表并进行排序,而不存在任何问题。
但是,如果我试图按带有西班牙格式浮点数的列对表进行排序,排序是不正确的。这是因为javascript中的浮点数格式是英文格式的,因此要在屏幕上显示这些值,我必须将浮点数转换成字符串,然后进行更改。按",“。
在西班牙语中,我们用昏迷分隔小数部分,而不是用圆点。例如,12.95 (英文格式) === 12,95 (西班牙文格式)
因此,如果我尝试按DRE列从高到低对表进行排序,正如您在下一个图像中看到的那样,排序是不正确的。因为数据实际上是字符串,而不是浮点数,这是因为我必须用它们进行更改。
因此,是否有办法将英文格式的浮点数转换为西班牙语格式的浮点数?或者根据另一列的值来排序列吗?例如,我可以将相同的列添加到表中,但可以添加两次。一次是英语格式,另一次是西班牙语格式。带有英文格式的列将不可见,但带有西班牙格式的列将是可见的。该列将根据该列的英文格式进行排序。
有什么办法吗?或者其他的选择?

编辑I
多亏了@Uby,我可以对表进行排序,但并不总是做得很好。
我的分类功能是:
sortFunc: (a, b, order) => {
if (order === 'asc') {
return parseFloat(a) - parseFloat(b);
}
return parseFloat(b) - parseFloat(a); // desc
},但是,将表从高到低或从低到高排序并不总是正确的:S


我做错了什么吗?我不明白会发生什么。
发布于 2020-03-14 17:37:27
您可以定义一个自定义排序函数,在其中自己解析浮点数并将其添加到列定义中,如下所示:
{
// omitted...
sort: true,
sortFunc: (a, b, order, dataField, rowA, rowB) => {
let fA = parseFloat(a.replace(',','.'));
let fB = parseFloat(b.replace(',','.'));
if (order === 'asc') {
return fB - fA;
}
return fA - fB; // desc
}发布于 2020-03-14 17:27:52
由于您使用的是react-bootstrap-table-next,所以可以尝试编写自定义排序函数。这是文件。
您必须将单元格内容解析为float (用点替换逗号),然后进行浮点比较。
https://stackoverflow.com/questions/60685388
复制相似问题