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")
)