Javascript比较数字作为字符串

时间:2019-07-11 11:57:20

标签: javascript string-comparison

我希望比较JavaScript中的两个字符串。我正在使用localeCompare方法,但输出与预期不符

<input id="Ju6wJZPEnc" aria-invalid="false" placeholder="ENTER_PICKUP_ADDRESS" class="MuiInput-input-32 controls" type="text" name="rRxgEiRXru" onkeypress="return event.keyCode !== 13;" autocomplete="8J%A*yG9eb!F[NLEqv8Q">

第二和第三种情况下的输出与预期的不同。

我知道它按字典顺序排序,但是我仍然很难理解为什么会这样,以及我该如何克服它。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

如果要比较它们而不将其转换为数字,可以在numeric: true参数中设置options

console.log(
  "116457".localeCompare("3085", undefined, { numeric: true })
)
console.log(
  "116457".localeCompare("3085")
)

答案 1 :(得分:3)

如果116457是一个单词,那么字典中的单词会在3085之前出现。

考虑使用字典

  • “ applicative”(以“ a”开头的长字,例如,以“ 1”开头的长数字字符串)
  • “复制”(一个简短的单词,以“ c”开头,c.f。一个较短的数字字符串,以“ 3”开头)。