Javascript 使用React&;中的状态值对数组进行排序;JSX

Javascript 使用React&;中的状态值对数组进行排序;JSX,javascript,arrays,reactjs,algorithm,sorting,Javascript,Arrays,Reactjs,Algorithm,Sorting,我试图对表中的行进行排序,并根据状态中的sortBy值更改每个列 这是我的状态: state = { columnHeaders: ["Meat", "Protein", "Calories", "Carbohydrates", "Fat"], rows: [ ["chicken breast", "25", "200", "37", "8"], ["fried chicken", "45", "450", "21", "16"], ["baked fish",

我试图对表中的行进行排序,并根据状态中的
sortBy
值更改每个列

这是我的状态:

state = {
  columnHeaders: ["Meat", "Protein", "Calories", "Carbohydrates", "Fat"],
  rows: [
    ["chicken breast", "25", "200", "37", "8"],
    ["fried chicken", "45", "450", "21", "16"],
    ["baked fish", "15", "250", "30", "9"]
  ],
  sortedBy: "",
  order: "desc",
  query: "all"
};
当只单击一个列标题时,函数当前正在过滤所有列。
sortBy
正在动态更改,因此我不确定为什么整个数组的排序不仅仅是索引

const { columnHeaders, rows, query, sortedBy, order } = this.state;

const newRows = query === "all" 
  ? rows
  : rows.filter(row => row[0].includes(query));

const sortedRows = sortedBy === ""
  ? newRows
  : newRows.sort((a, b) => {
   const valueA = a[columnHeaders.indexOf(sortedBy)];
   const valueB = b[columnHeaders.indexOf(sortedBy)];
    let sortedValue = 0;
    if (valueA < valueB) {
      sortedValue = -1;
    } else if (valueA > valueB) {
      sortedValue = 1;
    }
    if (order === "desc") {
      // if descending order, turn around the sort order
      sortedValue *= -1;
    }
    return sortedValue;
  });

这发生在初始渲染后或修改
状态
值后(如
顺序
排序依据
,…)?如果在修改状态后,
sortedBy
的值是多少?这发生在状态被修改后,我有一个onclick函数,当列被单击时,它会获取列名称并将其存储在sortBy状态下。我想在排序函数中使用sortBy基于您的数据,每一行都是数组,所以,
sortedBy
的值应该是列的索引号,比如0,1,2……是的,我理解,但我正在试图找到一种方法来关联它,可能类似于const valueA=sortBy==“Meat”?a[0]:“”。。。etc const valueB=sortBy==“肉”?b[0]:“”。。。关于此
常量值a=a[columnHeaders.indexOf(sortedBy)]
的说明?这发生在初始呈现后或修改
状态
值后(如
顺序
sortedBy
,…)?如果在修改状态后,
sortedBy
的值是多少?这发生在状态被修改后,我有一个onclick函数,当列被单击时,它会获取列名称并将其存储在sortBy状态下。我想在排序函数中使用sortBy基于您的数据,每一行都是数组,所以,
sortedBy
的值应该是列的索引号,比如0,1,2……是的,我理解,但我正在试图找到一种方法来关联它,可能类似于const valueA=sortBy==“Meat”?a[0]:“”。。。etc const valueB=sortBy==“肉”?b[0]:“”。。。关于此
const valueA=a[columnHeaders.indexOf(sortedBy)]
的说明?
{
  sortedRows.map((row, i) => (
    <TableRow key={`thc-${i}`}>
      <TableItem row={row} />
    </TableRow>
  ));
}