Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React引导表下一步对动态表上的字母数字字符串进行排序_Javascript_Reactjs_React Bootstrap Table - Fatal编程技术网

Javascript React引导表下一步对动态表上的字母数字字符串进行排序

Javascript React引导表下一步对动态表上的字母数字字符串进行排序,javascript,reactjs,react-bootstrap-table,Javascript,Reactjs,React Bootstrap Table,我有一个动态表,在React引导表中生成70多个列。我在尝试按字母数字顺序对列进行排序时遇到了一个问题(有些列是数字,有些列是字母)。输入到列中的数据都是字符串。我使用的是sortFunc,但它当然只对数值字符串的列进行排序。我怎样才能让sortFunc对两者进行排序 这是我尝试过的功能。签出sortFunc let columns = []; let headers = Object.keys(this.props.reconDetails[0]); //creating the text f

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

这是我尝试过的功能。签出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方法

我解决了以下问题:

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});
       },