我正在使用ReactJS中的antdesign表来显示数字数据.列中有空值,这会导致排序功能出现问题.问题是,无论排序方向如何,我希望空值始终显示在表的末尾,但不幸的是,我只能在一个方向上实现这一点.我做错了什么?

我try 过的自定义排序功能是:

const customSorter = (a, b,col) => {
    
    if (a[col] === null && b[col] === null) {
      return 0;
    } else if (a[col] === null) {
      return -1;
    } else if (b[col] === null) {
      return 1;
    }
  
    return parseFloat(a[col]) - parseFloat(b[col]);};

推荐答案

您需要修改条件,以确定排序是按序还是降序,在这两种情况下都将空值推到最后.

const customSorter = (a, b, col, sortOrder) => {
    if (a[col] === null && b[col] === null) {
        return 0;
    } else if (a[col] === null) {
        return 1;  // Push `a` with null at the end
    } else if (b[col] === null) {
        return -1; // Push `b` with null at the end
    }

    const numA = parseFloat(a[col]);
    const numB = parseFloat(b[col]);
    return sortOrder === 'ascend' ? numA - numB : numB - numA;
};

JSX

<Table
    dataSource={dataSource}
    columns={[
        {
            title: 'Number',
            dataIndex: 'number',
            key: 'number',
            sorter: (a, b, sortOrder) => customSorter(a, b, 'number', sortOrder),
            sortDirections: ['ascend', 'descend'],
        },
        // other columns
    ]}
/>

Javascript相关问答推荐

使用Element.children在前后移动 node

回归函数不会迭代到foreach中的下一个元素

导入图像与内联包含它们NextJS

React:如何将表格收件箱正确渲染为表格主体内的组件?

React Native平面列表自动滚动

使用JavaScript在ionic Web应用程序中更新.pane和.view的背景 colored颜色

node TS:JWT令牌签名以验证客户端和后台问题之间的身份验证

了解Node.js中的EventEums和浏览器中的addEventEums之间的关系

在vercel throws上部署带有gunjs的sveltekit应用无法找到模块./' lib/文本编码'

在这种情况下,如何 for each 元素添加id?

如何在mongoose中链接两个模型?

仅针对RTK查询中的未经授权的错误取消maxRetries

JS,当你点击卡片下方的绿色空间,而它是在它的背后转动时,

JSDoc创建并从另一个文件导入类型

JQuery Click事件不适用于动态创建的按钮

对路由DOM嵌套路由作出react

Use Location位置成员在HashRouter内为空

当我在Reaction中创建一个输入列表时,我的输入行为异常

Docent.cloneNode(TRUE)不克隆用户输入

使用API调用的VUE 3键盘输入同步问题