javascript - 如何将一个函数用于具有不同数据字段的多个表头
问题描述
所以我有一些函数可以对表格中的数字进行排序:
sortNumbers1(a,b,order){
if (order === 'desc') {
return Number(b.newScore) - Number(a.newScore);
} else {
return Number(a.newScore) - Number(b.newScore);
}
}
sortNumbers2(a,b,order){
if (order === 'desc') {
return Number(b.oldScore) - Number(a.oldScore);
} else {
return Number(a.oldScore) - Number(b.oldScore);
}
}
<BootstrapTable data={this.props.resData}>
<TableHeaderColumn dataField="oldScore" dataSort={true} sortFunct={this.sortNumbers2}>
Old Score
</TableHeaderColumn>
<TableHeaderColumn dataField="newScore" dataSort={true} sortFunct={this.sortNumbers1}>
New Score
</TableHeaderColumn>
</BootstrapTable>
如您所见,我必须为每个表头定义一个排序函数(因为它们有不同的数据字段),如果我有 100 个表头怎么办?
我的问题:有没有一种方法可以只定义一个函数并用于所有表头(例如使用参数)
我尝试使用一个函数并为数据字段传递一个参数,但我不知道如何正确执行。
解决方案
您可以像这样定义要对参数内部数据进行排序的字段:-
sortNumbersByField(a, b, order, field){
if (order === 'desc') {
return Number(b[field]) - Number(a[field]);
} else {
return Number(a[field]) - Number(b[field]);
}
}
<BootstrapTable data={this.props.resData}>
<TableHeaderColumn dataField="oldScore" dataSort={true} sortFunct={this.sortNumbersByField}>
Old Score
</TableHeaderColumn>
<TableHeaderColumn dataField="newScore" dataSort={true} sortFunct={this.sortNumbersByField}>
New Score
</TableHeaderColumn>
</BootstrapTable>
在从TableHeaderColumn调用函数sortNumbersByField时,您的代码可以定义他们想要对数据进行排序的列/字段。
推荐阅读
- loops - Google Script-如果连续 7 个单元格为空白,如何停止循环
- tensorflow - 恢复没有最后一层的tensorflow Resnet50V2模型
- python - 如何加载 JSON 文件并将此 JSON 中的值分配给 Python 代码中的局部变量?
- docker - Docker-compose 错误服务器是否在主机“postgres”(172.18.0.2)上运行并接受
- firebase - Flutter Firestore 快照文档循环不会停止
- python - UnicodeEncodeError,我无法从 json 文件中打印字典
- python - Scons 自定义依赖扫描器构造函数返回 NONE 对象
- eclipse - 不知道如何获得写入 eclipse.ini 文件的权限
- python - Pyinstaller 错误:ModuleNotFoundError:对于 Python 3.7 没有名为“pkg_resources.py2_warn”的模块
- flutter - Fluttter :尝试向 FlutterEngine 自动注册插件,但找不到并调用 GeneratedPluginRegistrant