2

我有array并将Objects我的数据添加到HTML Table. 现在我需要按版本对数据进行排序。我怎么能做这样的事情React

  render() {
    return (
      <div>
        <div>
          <Label> We got {this.state.count} elements in our database. </Label>
        </div>
        <div>
          <Table hover striped bordered responsive size="sm" >
            <thead>
              <tr>
                <th>VERSION</th>
                <th>DATE</th>
                <th>UUID</th>
              </tr>
            </thead>
            <tbody>
              {this.state.results.map(result =>
                <tr key={result.fileId}>
                  <td>{result.VERSION}</td>
                  <td>{result.ORIGIN}</td>
                  <td>{result.UUID}</td>
                </tr>
              )}
            </tbody>
          </Table>
        </div>
      </div>
    );
  }
}

也许我可以使用一些js脚本,但告诉我如何使用它,我是ReactJS. 例如,我的版本是0.26.8

4

3 回答 3

3

我会sortBy()在这里使用 lodash 的功能:

https://lodash.com/docs/4.17.4#sortBy

const sorted = _.sortBy(this.state.results, 'VERSION')

然后映射sorted而不是this.state.results

于 2017-07-25T17:19:10.550 回答
2

只需确保this.state.results在渲染之前正确排序。


最简单的方法可能类似于以下内容:

  {this.state.results.sort((a, b) => a.VERSION - b.VERSION).map(result =>
    <tr key={result.fileId}>
      <td>{result.VERSION}</td>
      <td>{result.ORIGIN}</td>
      <td>{result.UUID}</td>
    </tr>
  )}

编辑:由于您声明版本不是数值,而是语义版本控制字符串,因此您的排序功能需要更复杂一些。我建议您看一下这个 SO question,或者使用涵盖该用例的众多可用库之一。

于 2017-07-25T17:21:35.480 回答
1
const sorted = results.sort((x,y) => {
    return parseInt(x.VERSION) - parseInt(y.VERSION);
});

按升序排序

于 2017-07-25T17:21:44.650 回答