Javascript 比较类型字符串的数量
我正在实现一个排序函数,遇到了以下问题:Javascript 比较类型字符串的数量,javascript,Javascript,我正在实现一个排序函数,遇到了以下问题: '49' > '5' // false '49' > '4' // true new String(49).localeCompare('4') // 1 new String(49).localeCompare('5') // -1 预期行为显然是49>4或5应该是正确的。有没有办法在不将字符串转换为数字的情况下解决此问题?这实际上是比较字符串时的预期行为,如前所述。对于这种情况,最简单的方法是将值转换为数字进行比较,如果要将它们作为数
'49' > '5' // false
'49' > '4' // true
new String(49).localeCompare('4') // 1
new String(49).localeCompare('5') // -1
预期行为显然是49>4或5应该是正确的。有没有办法在不将字符串转换为数字的情况下解决此问题?这实际上是比较字符串时的预期行为,如前所述。对于这种情况,最简单的方法是将值转换为数字进行比较,如果要将它们作为数字进行比较
在使用
操作符之前,可以先比较字符串的长度。如果它们是数字字符串,则较长的字符串将具有较高的值(假设您没有像“0024”这样的数字)。如果它们的长度相等,那么
操作符将按照您的预期工作。您问这个问题是出于好奇,还是在转换为数字时遇到了任何问题,比如性能问题?您可以对函数做一些有趣的事constructor@aduch您可以使用函数构造函数做一些有趣的事情;)。但我宁愿不去评估stuff@Johan:可以通过将字符串包装到对象中并定义运算符的值来更改字符串比较。太多的工作,但仍然是可能的。只是说,可能你知道,在字符串前面使用+将其转换为数字。这是因为'4'.charCodeAt()<'5'.charCodeAt()
?