我正在尝试对表的行进行排序,并在状态动态变化的状态下给定“sortBy”值更改每一列,但要排序的函数未正确对值进行排序。该函数当前正在排序,但它对整个数组进行排序,而不是对选定的 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"
};
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;
});
这是呈现 sortedRows 变量的地图
{
sortedRows.map((row, i) => (
<TableRow key={`thc-${i}`}>
<TableItem row={row} />
</TableRow>
));
}