我正在实施排序功能并遇到以下情况:
'49' > '5' // false
'49' > '4' // true
new String(49).localeCompare('4') // 1
new String(49).localeCompare('5') // -1
预期的行为显然是49> 4或5应该是真的。有没有办法解决这个问题而不将字符串转换为数字?
答案 0 :(得分:1)
这是比较字符串时的实际预期行为,如here所述。对于这种情况,最简单的方法是将值转换为数字进行比较,如果您想将它们作为数字进行比较。
在框外思考一下,您可以先使用>
运算符比较字符串的长度。如果它们是数字字符串,则较长的字符串将具有较高的值(假设您没有像#00; 0024'这样的数字)。如果它们的长度相等,则>
运算符将按预期工作。