Javascript 将数字作为字符串进行比较
Javascript compare numbers as strings
我想比较 javascript 中的两个字符串。我正在使用 localeCompare 方法,但输出与预期不符
116457 < 3085
false
"116457" < "3085"
true
"116457".localeCompare("3085")
-1
第二种和第三种情况的输出不符合预期。
我知道它按字典顺序排序,但我仍然无法理解为什么会这样以及我应该如何克服它。
如有任何帮助,我们将不胜感激。
如果 116457 是一个单词,它在字典中会排在 3085 之前。
考虑一本字典
- "applicative"(以"a"、c.f开头的长字。以“1”开头的长数字串)
- "copy"(以"c"、c.f开头的短词。以“3”开头的较短数字串)。
如果你想比较它们而不转换成数字,你可以设置numeric: true
in the options
参数
console.log(
"116457".localeCompare("3085", undefined, { numeric: true })
)
console.log(
"116457".localeCompare("3085")
)
我想比较 javascript 中的两个字符串。我正在使用 localeCompare 方法,但输出与预期不符
116457 < 3085
false
"116457" < "3085"
true
"116457".localeCompare("3085")
-1
第二种和第三种情况的输出不符合预期。
我知道它按字典顺序排序,但我仍然无法理解为什么会这样以及我应该如何克服它。
如有任何帮助,我们将不胜感激。
如果 116457 是一个单词,它在字典中会排在 3085 之前。
考虑一本字典
- "applicative"(以"a"、c.f开头的长字。以“1”开头的长数字串)
- "copy"(以"c"、c.f开头的短词。以“3”开头的较短数字串)。
如果你想比较它们而不转换成数字,你可以设置numeric: true
in the options
参数
console.log(
"116457".localeCompare("3085", undefined, { numeric: true })
)
console.log(
"116457".localeCompare("3085")
)