繁体   English   中英

排序值由整数和%符号组成

[英]Sort values made up of an integer followed by % sign

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

Length,Class
Weight
Length,Width,Height

还有一列带有值的-

1%
5%
38%

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

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

像这样-

desc-['Length,Width,Height','Length,Class','Weight'];
desc-['1%','38%',5%];

其他列正在正确排序。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM