-
• 1. javascript 中 parseInt
-
• 1.1. 基本用法
-
• 1.1.1. 无指定基数(默认十进制)
-
• 1.1.2. 指定基数
-
• 1.2. 特殊情况与注意事项
-
• 2. 扩展:Javascript中json的操作有哪些
-
• 2.1. JSON.stringify()
-
• 2.2. JSON.parse()
-
• 2.3. 直接操作JSON对象

1. javascript 中 parseInt
在 JavaScript 中,parseInt()
函数是一个内置函数,用于将一个包含整数的字符串解析为相应的整数数值。它主要接收两个参数:
-
1. string – 必需。要被解析的字符串。
-
2. radix – 可选。表示字符串中数字的基数(进制),即数字系统中使用的符号数。其值必须介于 2 到 36 之间(包括 2 和 36)。如果省略此参数或其值为 0,则 JavaScript 将根据字符串前缀来智能地确定基数。如果没有明确的前缀且省略了 radix 参数,那么默认基数为 10(十进制)。
以下是 parseInt()
函数的一些关键特性及使用示例:
1.1. 基本用法
1.1.1. 无指定基数(默认十进制)
当不提供或忽略 radix
参数时,parseInt
会尝试将字符串解析为十进制整数。如果字符串以可识别的数字开始,它会一直解析到遇到非数字字符为止。
// 十进制数字字符串
parseInt("123"); // 返回 123
parseInt("-456"); // 返回 -456
// 字符串前有空白字符
parseInt(" 789"); // 返回 789,空格被忽略
// 非纯数字字符串,只解析开头的有效数字
parseInt("3.14"); // 返回 3,小数点和后面的数字被忽略
parseInt("12abc"); // 返回 12,'abc' 被忽略
parseInt("0x1A"); // 返回 10,以 '0x' 开头被视为十六进制数,但因为没有指定基数,所以按十进制解析
1.1.2. 指定基数
通过提供 radix
参数,可以明确指定字符串所代表数字的基数。这对于处理不同进制(如二进制、八进制、十六进制)的字符串非常有用。
// 二进制(基数为2)
parseInt("1010", 2); // 返回 10(二进制 "1010" 对应十进制的 10)
// 八进制(基数为8)
parseInt("077", 8); // 返回 63(八进制 "077" 对应十进制的 63)
// 十六进制(基数为16)
parseInt("FF", 16); // 返回 255(十六进制 "FF" 对应十进制的 255)
// 注意,对于带有特定前缀的字符串,即使指定了基数,也依然会按照前缀解析
parseInt("0xFF", 10); // 返回 255,尽管指定了基数10,但因有 "0x" 前缀,仍按十六进制解析
// 不正确的基数会导致解析失败,返回 NaN
parseInt("101", ¾); // 返回 NaN,因为基数不是 2 到 36 之间的整数
1.2. 特殊情况与注意事项
-
• 空字符串:
parseInt("")
返回NaN
,因为没有有效的数字可以解析。 -
• 非数字字符开头:如果字符串的第一个字符不能被解析为数字,
parseInt
返回NaN
。 -
• 数字前缀:
-
• 前缀为
"0x"
或"0X"
表示十六进制数,即使未指定radix
也会被正确解析。 -
• 前缀为
"0"
(且没有"0x"
或"0X"
)可能被解释为八进制数(在某些旧版本的 JavaScript 实现中)。为了避免混淆,建议始终指定radix
参数。 -
• 浮点数字符串:
parseInt
只解析整数部分,小数点及其后的部分会被忽略。 -
• 超出范围的数值:如果解析出的整数值超出了 JavaScript 所能表示的整数范围(
Number.MAX_SAFE_INTEGER
和Number.MIN_SAFE_INTEGER
),可能会导致精度损失或意外行为。
综上所述,parseInt
是一个强大的工具,用于将字符串转换为整数。正确使用时,需要考虑字符串的内容、预期的进制以及是否需要指定 radix
参数,以确保准确无误地解析数值。
更多详细内容,请微信搜索“前端爱好者
“, 戳我 查看 。
2. 扩展:Javascript中json的操作有哪些
在JavaScript中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
JavaScript提供了原生支持来操作JSON,主要包括以下几种操作:
2.1. JSON.stringify()
-
• 功能:将一个JavaScript值(对象、数组、基本类型等)转换为JSON字符串。
-
• 语法:
JSON.stringify(value[, replacer[, space]])
-
• 参数:
-
•
value
:要转换的JavaScript值。 -
•
replacer
:可选,可以是一个函数或一个数组,用于控制哪些属性应包含在序列化的JSON字符串中,以及如何转换它们的值。 -
•
space
:可选,用于美化输出的字符串,指定缩进空格数或字符串(如t
)。 -
• 示例:
const person = {
name: "John Doe",
age: 30,
address: {
street: "123 Main St",
city: "New York"
}
};
// 默认序列化
const jsonStr = JSON.stringify(person);
console.log(jsonStr); // '{"name":"John Doe","age":30,"address":{"street":"123 Main St","city":"New York"}}'
// 使用replacer函数过滤属性
const jsonStrWithReplacer = JSON.stringify(person, (key, value) => {
if (key === 'age') return undefined; // 移除年龄属性
return value;
});
console.log(jsonStrWithReplacer); // '{"name":"John Doe","address":{"street":"123 Main St","city":"New York"}}'
// 美化输出
const prettyJsonStr = JSON.stringify(person, null, 2);
console.log(prettyJsonStr);
/* 输出:
* {
* "name": "John Doe",
* "age": 30,
* "address": {
* "street": "123 Main St",
* "city": "New York"
* }
* }
*/
2.2. JSON.parse()
-
• 功能:将一个JSON字符串解析为相应的JavaScript值。
-
• 语法:
JSON.parse(text[, reviver])
-
• 参数:
-
•
text
:要解析的JSON字符串。 -
•
reviver
:可选,一个函数,用于在解析每个键/值对时对其进行处理,返回值将作为新的键/值对替代原来的值。 -
• 示例:
const jsonString = '{"name":"John Doe","age":30,"address":{"street":"123 Main St","city":"New York"}}';
// 默认解析
const parsedObj = JSON.parse(jsonString);
console.log(parsedObj); // { name: 'John Doe', age: 30, address: { street: '123 Main St', city: 'New York' } }
// 使用reviver函数处理解析后的值
const parsedObjWithReviver = JSON.parse(jsonString, (key, value) => {
if (key === 'age') return value + 1; // 将年龄加1
return value;
});
console.log(parsedObjWithReviver); // { name: 'John Doe', age: 31, address: { street: '123 Main St', city: 'New York' } }
2.3. 直接操作JSON对象
-
• 一旦JSON字符串被解析为JavaScript对象,你就可以像操作普通对象一样操作它,包括访问、修改、添加和删除属性,遍历对象和数组,以及使用其他JavaScript对象操作方法和函数。
const jsonObject = JSON.parse(jsonString);
// 访问属性
console.log(jsonObject.name); // "John Doe"
// 修改属性
jsonObject.name = "Jane Doe";
jsonObject.address.city = "Los Angeles";
// 添加属性
jsonObject.phone = "555-1234";
// 删除属性
delete jsonObject.age;
// 遍历对象
for (const key in jsonObject) {
console.log(key, jsonObject[key]);
}
// 使用Array方法处理数组属性
if (Array.isArray(jsonObject.hobbies)) {
jsonObject.hobbies.push('reading');
}
JavaScript中对JSON的主要操作包括序列化(JSON.stringify()
)和反序列化(JSON.parse()
),以及解析后的JSON对象的常规JavaScript对象操作。
这些操作使得在JavaScript程序中方便地处理JSON数据成为可能。
原文始发于微信公众号(前端爱好者):你知道Javascript总parseInt的第二个参数吗?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/288702.html