我有一个包含值的md-table列-
Length,Class
Weight
Length,Width,Height
还有一列带有值-
1%
5%
38%
当我尝试以升序和降序对这些列进行排序时,它不会给出正确的结果。
我使用arrayname.sort()进行升序排序,使用arrayname.reverse()进行降序排序。
它是这样的-
desc -‘长,宽,高’,‘长,类’,‘重’;
desc - '1%','38%',5%;
其他列排序正确。
发布于 2016-09-02 03:36:16
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上的例子,它们涵盖了许多不同的场景。
https://stackoverflow.com/questions/39277142
复制相似问题