我正在try 修改我为一个允许对其列进行排序的表找到的一些代码.该示例仅适用于字符串值,我正在try 对其进行修改,以便我的表可以在某些列中包含数字,同时仍然保留排序功能.我正在使用的示例可以在这里找到https://github.com/mantinedev/ui.mantine.dev/blob/master/lib/TableSort/TableSort.tsx
这是我目前使用的排序函数.我曾try 使用If语句和typeof来更改排序方式,但我对打字非常陌生,似乎无法理解它.
function sortData(
data: dataInterface[],
payload: { sortBy: keyof dataInterface | null; reversed: boolean; search: string }) {
const { sortBy } = payload;
if (!sortBy) {
return filterData(data, payload.search);
}
return filterData(
[...data].sort((a, b) => {
if (payload.reversed) {
return b[sortBy].localeCompare(a[sortBy]);
}
return a[sortBy].localeCompare(b[sortBy]);
}),
payload.search
);
}
FilterData函数:
function filterData(data: dataInterface[], search: string) {
const query = search.toLowerCase().trim();
return data.filter((item) =>
keys(data[0]).some((key) => item[key].toLowerCase().includes(query))
);
}
我的数据接口看起来像这样:
interface dataInterface {
guid: string;
name: string;
set: string;
quantity: string;
price: number;
}