背景
在公司改需求的时候有个值的判断,没有发现后端返回的是字符串类型的数字,结果比较大小一直出错。下面是整理的一下字符串的比较规则以及字符串转数字的方法。供大家学下一下。
字符串比较规则
在 JavaScript 中,字符串的比较是基于 Unicode 字符的代码点 (code points) 的顺序进行的。这意味着字符串是逐字符比较的,从第一个字符开始,如果第一个字符相同,则比较第二个字符,以此类推。这里是一些字符串比较规则:
- 字典序比较:按字典顺序比较字符串的每个字符。
- 区分大小写:'A' 和 'a' 是不同的字符,因为它们的 Unicode 代码点不同。
- 空字符串:空字符串
""
小于任何其他非空字符串。 - 长度较长的字符串可能更大:如果前面的部分相同,比较的结果取决于较长的字符串。
console.log("apple" > "banana"); // false
console.log("apple" < "banana"); // true
console.log("apple" == "Apple"); // false
console.log("apple" > "Apple"); // true (因为 'a' 的代码点比 'A' 大)
console.log("apple" > "app"); // true
console.log("" < "a");
字符串转数字
最简单的直接*1乘以1转数字
Number()函数:
let str1 = "42";
let num1 = Number(str1); // num1 = 42
let str2 = "3.14";
let num2 = Number(str2); // num2 = 3.14
let str3 = "hello";
let num3 = Number(str3); // num3 = NaN
Number()函数会尝试将字符串转换为数字类型。如果字符串包含有效的数字,则返回相应的数值。如果字符串不包含有效的数字,则返回NaN(Not a Number)。
parseFloat()函数:
let str1 = "3.14";
let num1 = parseFloat(str1); // num1 = 3.14
let str2 = "42";
let num2 = parseFloat(str2); // num2 = 42.0
let str3 = "hello";
let num3 = parseFloat(str3); // num3 = NaN
parseFloat()函数将字符串解析为浮点数。如果字符串以有效的浮点数开头,则返回该浮点数。如果字符串不包含有效的浮点数,则返回NaN。
parseInt()函数:
let str1 = "42";
let num1 = parseInt(str1); // num1 = 42
let str2 = "3.14";
let num2 = parseInt(str2); // num2 = 3
let str3 = "hello";
let num3 = parseInt(str3); // num3 = NaN
parseInt()函数将字符串解析为整数。它从字符串开头解析,直到遇到非数字字符为止。如果字符串以有效的整数开头,则返回该整数。如果字符串不包含有效的整数,则返回NaN。