我想使用str1 < str2 ? -1 : str1 > str2
进行字母排序。
但是,我的输入字符串代表大整数(对于所有问题,都使用十六进制格式)。
即使任何输入字符串表示的数字值都大于Number.MAX_SAFE_INTEGER
,还是可以安全地使用上面的比较,或者在比较之前,NodeJS会将这些String
对象转换为Number
对象(在这种情况下,我会可能会有数据丢失的风险)?
谢谢!!
不,它使用不安全,甚至不依赖于Number.MAX_SAFE_INTEGER
。比较将使用字典顺序排序:
console.log("10" < "2"); //true
console.log(10 < 2); //false
相反,您可以使用String#localeCompare
with the numeric option。这将对字符串使用数字排序规则,并且可以正确处理数字:
String#localeCompare