排序值由整数后跟%符号组成

时间:2016-09-01 17:00:09

标签: javascript sorting protractor

我有一个带有值的md-table列 -

Length,Class
Weight
Length,Width,Height

还有一个包含值的列 -

1%
5%
38%

当我尝试按升序和降序对这些列进行排序时,它不会给我正确的结果。

我使用arrayname.sort()进行升序,使用arrayname.reverse()进行降序排序。

这样排序 -

desc - ['长度,宽度,高度','长度,等级','重量'];
desc - ['1%','38%',5%];

其他列正确排序。

1 个答案:

答案 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上的示例,它们涵盖了很多不同的场景。