Jquery Datatables 如何对自定义格式的数字列进行排序?

Dha*_*777 1 datatables typescript

我在数据表中有一个列,它将数值呈现为格式化的货币值,例如“$5,66666.77 USD”。这是该列的 Jquery 表定义的一部分,

            data: "amount",
            orderable: true,
            searchable: false,
            render: (data, type, row) => {
                var formattedAmount = "$" + data.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,") + " " + "USD";
                return formattedAmount;
            }
Run Code Online (Sandbox Code Playgroud)

当我没有“USD”后缀时,它会正确排序。但当我有美元时,它就像一个字符串。有解决办法吗?我可以为排序数据定义不同的值吗?

我正在使用 Typescript 打字。

“data”属性接受ObjectColumnData,我尝试使用它,但它没有使用我定义的排序字段。

 interface ObjectColumnData {
        _: string;
        filter?: string;
        display?: string;
        type?: string;
        sort?: string;
    }
Run Code Online (Sandbox Code Playgroud)

我必须为此编写自定义排序吗?

Gyr*_*com 5

仅当要显示数据时才可以返回格式化值,否则可以返回无格式值以进行排序、过滤或类型检测。

例如,在 JavaScript 中:

render: function(data, type, row){
    if(type === 'display'){
        data = "$" + data.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,") + " " + "USD"; 
    }

    return data;
}
Run Code Online (Sandbox Code Playgroud)