我有一个数据表:
var dataTable = $('#statistics-table').DataTable({
paging: false,
searching: false,
info: false,
order: [[2, "desc"]],
columns: [
{
title: "Bid Price",
data: "Bid"
},
{
title: "Ask Price",
data: "Ask"
},
{
title: "Profit",
data: {
_: "Profit.display",
sort: "Profit.sort"
}
}
]
});
问题在于
利润
列被排序为字符串:查看
这里是我设置属性的地方。一个用于用户视图,另一个用于排序(遵循此处的示例here)。rows.every(function () {
var data = this.data();
var minimalAsk = formatNumber(lowestValuesByCurrency[currency].Ask);
if (data.Ask !== minimalAsk) {
var profit = formatNumber(data.Bid - minimalAsk);
var profitPercent = formatNumber((profit / minimalAsk) * 100);
if (profit > 0) {
data.Profit.display = `<strong class="increasing">+${profit} (+${profitPercent}‰)</strong>`;
} else {
data.Profit.display = `<strong class="decreasing">${profit} (${profitPercent}‰)</strong>`;
}
data.Profit.sort = Number(profit);
} else {
data.Profit.display = "Most cheap Ask";
data.Profit.sort = 0;
}
this.data(data);
});
dataTable.draw();
在我进行调试时,我可以看到Profit.sort
是一个数字而不是字符串(证明)。为什么它还在像字符串一样排序呢?