在 react-bootstrap-table2 中用逗号排序数字

Sorting number with comma in react-bootstrap-table2

使用 react-bootstrap-table2,当尝试用逗号 (12,000) 过滤大数字时,它不起作用。是否可以用逗号过滤数字?

例子

干杯!

没有看到你的代码,很难说。但是也许 table 中的每个单元格数据都是一个字符串,而不是一个数字,这可能会导致排序异常。我以前有同样的问题。按数字排序,然后用排序后数字的格式化字符串版本填充 table 单元格,如果这样的话。

让我们假设:

  • 您的字段名称是“估计”
  • 千位分隔符是 '(撇号)
  • 小数点分隔符是 ,(逗号)

您可以按如下方式编写排序函数 (sortFunc):

{
    dataField: 'estimation',
    text: 'Estimation',
    sort: true,
    sortFunc: (a, b, order, dataField, rowA, rowB) => {
    const numA = parseFloat(a.replace('\'', '').replace(',', '.'));
    const numB = parseFloat(b.replace('\'', '').replace(',', '.'));
    if (order === "asc") {
        return numB - numA;
    }
    return numA - numB;
}
import ToolkitProvider, { Search } from "react-bootstrap-table2-toolkit";
import paginationFactory from "react-bootstrap-table2-paginator";

首先请检查号码或non-number。

  1. 如果你的数组里面的数字 return 其他数字是 non-number :

    yourDataArray.map(function (item, x) {
      item._Number_of_stocks = parseInt(item.Number_of_stocks);
    });
    
  2. 排序函数在这里:

    sortFunc: (a, b, order, dataField, rowA, rowB) => {
      if (order === "asc") {
        return (
          isNaN(rowB._Number_of_stocks) - !isNaN(rowB._Number_of_stocks)
        );
      }
      return !isNaN(rowB._Number_of_stocks) - isNaN(rowB._Number_of_stocks);
    },
    

参见:https://github.com/react-bootstrap-table/react-bootstrap-table2/blob/master/docs/columns.md

我解决了这个问题,这是我的 Bootstrap Table 排序函数。

 sortFunc: (a, b, order) => {
    const numA = parseFloat(a.replace(/\,/g,''), 10)
    const numB = parseFloat(b.replace(/\,/g,''), 10)
    if (order === "asc") {
        return numB - numA;
    }
    return numA - numB;
  }