我有一个带有值的md-table列 -
Length,Class
Weight
Length,Width,Height
还有一个包含值的列 -
1%
5%
38%
当我尝试按升序和降序对这些列进行排序时,它不会给我正确的结果。
我使用arrayname.sort()进行升序,使用arrayname.reverse()进行降序排序。
这样排序 -
desc - ['长度,宽度,高度','长度,等级','重量'];
desc - ['1%','38%',5%];
其他列正确排序。
答案 0 :(得分:0)
Javascript排序基于unicode值,因此在某些情况下可能很挑剔。特别是在处理整数时,它们并不像你期望的那样,即:
var c = ["38%", "1%", "5%"]
c.sort() // ["1%", "38%", "5%"] not what you wanted
使用整数而不是数字串的相同示例:
var c = [5, 1, 38];
c.sort() // [1, 38, 5] also not what you want
但是,您应该能够创建一个适用于大多数情况的简单排序函数。有点像这样:
var c = [5, 1, 38];
c.sort(function(a,b) {
return a-b;
})
// [1, 5, 38] this is what you would expect/want
由于unicode值,它仍无法正常使用:
var c = ["38%", "1%", "5%"];
c.sort(function(a,b) {
return a-b;
});
["38%", "1%", "5%"] // not what you want
但是你可以在执行排序之前将那个%切片。看看MDN Array.sort上的示例,它们涵盖了很多不同的场景。