javascript - React-Bootstrap-Table-Next Sort 动态表上的字母数字字符串

标签 javascript reactjs react-bootstrap-table

我有一个动态表,它在 React-Bootstrap-Table-Next 中生成 70 多列。我在尝试按字母数字顺序对列进行排序时遇到问题(有些列是数字,有些列是字母)。输入列的数据都是 字符串 .我正在使用 sortFunc 但当然它只对数字字符串的列进行排序。我怎样才能让 sortFunc 对两者进行排序?
这是我尝试过的功能。 checkout sortFunc。

let columns = [];
let headers = Object.keys(this.props.reconDetails[0]); //creating the text for headers
const newColumn = {
   dataField: header,
   text: header,
   sort: true,
   sortFunc: (a, b, order, dataField) => {
      if (order === 'asc') {
          return b - a;
      }
       return a - b;
      };
   columns.push(newColumn);
   this.setState({
     columns
   })
}
引导表:
BootstrapTable
   striped
   headerClasses="tableHeader"
   classes="tableBody"
   wrapperClasses="table-responsive"
   keyField={"Case_Line_Number"}
   data={this.state.RECON_DETAIL}
   columns={this.state.columns}
   />

最佳答案

在这里找到答案,因为它很好地解释了它。作者使用了 localeCompare 方法。 http://fuzzytolerance.info/blog/2019/07/19/The-better-way-to-do-natural-sort-in-JavaScript/
我在下面解决了我的问题:

sortFunc: (a, b, order, dataField) => {
   if (order === 'asc' || !order) {
       return b.localeCompare(a, navigator.languages[0] || navigator.language, {numeric: true, ignorePunctuation: true});
       }
       return a.localeCompare(b, navigator.languages[0] || navigator.language, {numeric: true, ignorePunctuation: true});
       },

关于javascript - React-Bootstrap-Table-Next Sort 动态表上的字母数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62523669/

相关文章:

javascript - 如何正确设置卷尺?

javascript - 如何在 Express 路由器中使用 body-parser?

javascript - 指定 Meteor 包依赖项的正确方法

javascript - 如何使用 gatsby-plugin-gdpr-cookies 设置 Gatsby Cookie 同意横幅

css - 如何仅使 react 引导表标题的文本可点击

javascript - Chrome 无法连接到 websocket 服务器(操作码 -1) "handshake was canceled"

reactjs - 如何使用 React 测试库通过 Ant Design Upload 模拟上传文件?

reactjs - 如何将函数从父组件传递给类型为 assingable 的子组件

reactjs - Redux 存储在第一次单击按钮时不会更新

javascript - 逐列展开 : Expand row by multiple columns and load different components according to the column clicked