Javascript 如何对具有不同数据字段的多个表头使用一个函数
因此,我有一些函数可以对表中的数字进行排序:Javascript 如何对具有不同数据字段的多个表头使用一个函数,javascript,reactjs,Javascript,Reactjs,因此,我有一些函数可以对表中的数字进行排序: 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'
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>
sortNumbers1(a、b、订单){
如果(顺序=='desc'){
返回编号(b.newScore)-编号(a.newScore);
}否则{
返回编号(a.newScore)-编号(b.newScore);
}
}
排序编号2(a、b、订单){
如果(顺序=='desc'){
返回编号(b.oldScore)-编号(a.oldScore);
}否则{
返回编号(a.oldScore)-编号(b.oldScore);
}
}
旧账
新分数
正如您所看到的,我必须为每个表头定义一个排序函数(因为它们有不同的数据字段),如果我有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>
sortNumbersByField(a、b、订单、字段){
如果(顺序=='desc'){
返回编号(b[字段])-编号(a[字段]);
}否则{
返回编号(a[字段])-编号(b[字段]);
}
}
旧账
新分数
在从TableHeaderColumn调用函数sortNumbersByField时,您的代码可以定义要根据其对数据进行排序的列/字段。这不起作用。在不使用参数的情况下调用函数时,它如何知道参数字段是什么?当我更改参数的位置时,它实际上起了作用,如=>sortNumbersByField(a,b,order,field){//code…}我会给出最佳答案,但你能告诉我它如何知道参数的值吗?(或者给我一个关于这个主题的链接)这取决于您如何调用函数sortNumbersByField。如果函数将收到正确的参数,则它将根据提供的列对项目进行排序。@johndeveto如果对您有效,请接受答案。