2
我正在使用tablesorter来排序一组值,其格式因0123'到6.39 million
,37.3 million
,5.3 million
等不同而异。目前,插件排序简单地忽略了million
,否则排序很好,但是因此您得到类似'530万,639万,3730万,710,231,在tablesorter中排序'human'数字
我正在使用tablesorter来排序一组值,其格式因0123'到6.39 million
,37.3 million
,5.3 million
等不同而异。目前,插件排序简单地忽略了million
,否则排序很好,但是因此您得到类似'530万,639万,3730万,710,231,在tablesorter中排序'human'数字
您需要添加一个解析器来替换其名称值(demo):
// see big list here: http://www.unc.edu/~rowlett/units/large.html
var numbers = {
'zero' : 0,
'hundred' : 100,
'thousand' : 1e3,
'million' : 1e6,
'billion' : 1e9,
'trillion' : 1e12,
'quadrillion' : 1e15,
'quintillion' : 1e18,
'sextillion' : 1e21,
'septillion' : 1e24,
'octillion' : 1e27,
'nonillion' : 1e30,
'decillion' : 1e33
};
$.tablesorter.addParser({
id: "namedNumbers",
is: function() {
return false;
},
format: function (s, table) {
var v,
result = 1,
arry = (s || '').split(/[\-\s]+/),
len = arry.length;
while (len) {
v = $.tablesorter.formatFloat((arry[--len] || '').toLowerCase(), table);
if (numbers.hasOwnProperty(v)) {
result *= numbers[v];
} else {
result *= parseFloat(v);
}
}
return result !== 1 ? result : s;
},
type: "numeric"
});
$(function() {
$('table').tablesorter({
theme: 'blue',
headers : {
1 : { sorter : 'namedNumbers' }
}
});
});
如果tablesorter是一个特定的插件或库,您应该更加具体,并且可能使其成为文档的链接。此外,请提出问题。如果你不问问题,你就无法得到答案。 – 2014-10-03 02:08:56
换句话说,tablesorter工作正确,数据混乱。 – 2014-10-03 02:38:49
根据你所说的,它可能只是使用* parseFloat *。您首先需要一个将“人”号码转换为实际号码的功能(例如630万至6300000),然后您可以根据需要对其进行排序。 – RobG 2014-10-03 02:39:15