Javascript 如何对包含复选框的表进行排序

Javascript 如何对包含复选框的表进行排序,javascript,reactjs,bootstrap-4,Javascript,Reactjs,Bootstrap 4,我有一个问题,我正在尝试对一个包含一些数据和复选框的表进行排序。排序对数据有效,但对复选框无效 以下是我尝试过的:这是一种按序列号排序的方法 sortBySerial(key) { let sorted = [...this.state.jobRequestArray] const asc = this.state.serialNumberOrder === 'asc'; this.setState({ sortTable: true, showArrowSerialNumber: t

我有一个问题,我正在尝试对一个包含一些数据和复选框的表进行排序。排序对数据有效,但对复选框无效

以下是我尝试过的:这是一种按序列号排序的方法

sortBySerial(key) {
let sorted = [...this.state.jobRequestArray]
const asc = this.state.serialNumberOrder === 'asc';

this.setState({
  sortTable: true,
  showArrowSerialNumber: true,
  showArrowDetail: false,
  showArrowStatus: false,
  showArrowStatusDate: false
})
sorted.sort((a, b) => {
  if (a[key] < b[key]) {
    this.switch();

    return asc ? -1 : 1;
  } else if (a[key] > b[key]) {

    this.switch();

    return asc ? 1 : -1;
  } else {

    return 0;
  }

});
if (asc) {
  this.setState({
    showArrowSerialNumberAsc: true,
    serialNumberOrder: 'desc'
  })
} else {
  this.setState({
    showArrowSerialNumberAsc: false,
    serialNumberOrder: 'asc'
  })
}
this.setState({
  jobRequestArray: sorted
})}
sortBySerial(键){
让排序=[…this.state.jobRequestArray]
const asc=this.state.serialNumberOrder=='asc';
这是我的国家({
sortTable:是的,
showrowserialnumber:true,
showarrow详细信息:false,
显示箭头状态:false,
showArrowStatusDate:false
})
排序。排序((a,b)=>{
如果(a[键]b[键])为else{
这个.switch();
返回asc?1:-1;
}否则{
返回0;
}
});
如果(asc){
这是我的国家({
showArrowSerialNumberAsc:正确,
serialNumberOrder:“描述”
})
}否则{
这是我的国家({
showArrowSerialNumberAsc:false,
serialNumberOrder:“asc”
})
}
这是我的国家({
jobRequestArray:已排序
})}
这是方法switch(),对于该方法,我要做的是在对表进行排序时,将其与requestReworkArray内部的内容(选中复选框中的值)和复选框值进行比较

例如,如果我单击值为1的复选框,并且有另一个值为2的复选框未选中,那么当我排序时。这种方法将再次进行比较,并在正确的位置进行检查和取消检查,但似乎不起作用

switch() {
var checkboxes = document.querySelectorAll('input[type="checkbox"]');
this.state.requestReworkArray.map((currentRequest) => {

 if (!checkboxes[0].checked && this.state.sortTable) {
    for (var i = 0; i < checkboxes.length; i++) {
      if (checkboxes[i].name !== "print") {
        if (checkboxes[i].value !== currentRequest) {
         
        checkboxes[i].checked = false
        } else {  
      
          checkboxes[i].checked = true
        }

      }
    }
  }

});}
switch(){
var checkbox=document.querySelectorAll('input[type=“checkbox”]”);
this.state.requestReworkArray.map((currentRequest)=>{
如果(!复选框[0]。已选中&&this.state.sortTable){
对于(变量i=0;i
这是我的桌子:

<tr key={index} >

                <td><input type="checkbox"
                  name={index}
                  id={index}
                  key={index}
                  defaultChecked={currentJobs.status === "ERROR" ? this.checkStatusError(currentJobs.serialNumber, index) : false}
                  onClick={this.addingItem}
                  value={currentJobs?.serialNumber}

                ></input><span className="ml-4">{currentJobs?.serialNumber}</span></td>
                <td>{currentJobs.status === "CREATED" ? t('Status.1') : currentJobs.status === "IN_PRODUCTION" ? t('Status.2') :
                  currentJobs.status === "ERROR" ? t('Status.8') : currentJobs.status === "PRODUCED" ? t('Status.4') :
                    currentJobs.status === "CLOSED" ? t('Status.5') : currentJobs.status === "CANCELLED" ? t('Status.10') : null}</td>
                <td>{moment(currentJobs?.statusDate).format("YYYY-MM-DD HH:mm:ss")}</td>
                <td>{currentJobs?.detail}</td>
              </tr>

{currentJobs?.serialNumber}
{currentJobs.status==“已创建”?t('status.1'):currentJobs.status==“正在生产”?t('status.2'):
currentJobs.status==“错误”?t('status.8'):currentJobs.status==“已生产”?t('status.4'):
currentJobs.status==“已关闭”?t('status.5'):currentJobs.status==“已取消”?t('status.10'):null}
{矩(currentJobs?.statusDate).format(“YYYY-MM-DD HH:MM:ss”)}
{currentJobs?.detail}
我希望我足够清楚,并提前感谢您的帮助