update: 字符串的常见方法

This commit is contained in:
qianguyihao 2020-06-11 21:20:56 +08:00
parent a5b28d1627
commit fa7fc16682
4 changed files with 90 additions and 67 deletions

View File

@ -335,7 +335,7 @@ parseFloat() 的几个特性,可以参照 parseInt()。
## 转换为 Boolean ## 转换为 Boolean
将其他的数据类型转换为 Boolean可以使用 Boolean()函数情况如下 其他的数据类型都可以转换为 Boolean类型情况如下
- 情况一数字 --> 布尔除了 0 NaN其余的都是 true也就是说`Boolean(NaN)`的结果是 false - 情况一数字 --> 布尔除了 0 NaN其余的都是 true也就是说`Boolean(NaN)`的结果是 false
@ -348,6 +348,22 @@ parseFloat() 的几个特性,可以参照 parseInt()。
PS转换为 Boolean 的这几种情况**很重要**开发中会经常用到 PS转换为 Boolean 的这几种情况**很重要**开发中会经常用到
**1隐式转换为 Boolean 类型**
当非 Boolean 类型的数值和 Boolean类型的数值做比较时会先把前者进行隐式转换为 Boolean类型然后再做比较举例如下
```js
console.log(1 == true); // 打印结果true
console.log(0 == true); // 打印结果false
```
**2显式转换为 Boolean 类型**
方法1使用 `!!`可以显式转换为 Boolean 类型比如 `!!3`的结果是true
方法2使用 Boolean()函数可以显式转换为 Boolean 类型
## 知识补充其他进制的数字 ## 知识补充其他进制的数字

View File

@ -1,57 +1,4 @@
## 包装类的介绍
我们都知道js 中的数据类型包括以下几种
- 基本数据类型StringNumberBooleanNullUndefined
- 引用数据类型Object
JS 为我们提供了**三个包装类**
- String()将基本数据类型字符串转换为 String 对象
- Number()将基本数据类型的数字转换为 Number 对象
- Boolean()将基本数据类型的布尔值转换为 Boolean 对象
通过上面这这三个包装类我们可以**将基本数据类型的数据转换为对象**
代码举例
```javascript
let str1 = 'qianguyihao';
let str2 = new String('qianguyihao');
let num = new Number(3);
let bool = new Boolean(true);
console.log(typeof str1); // 打印结果string
console.log(typeof str2); // 注意打印结果object
```
**需要注意的是**我们在实际应用中不会使用基本数据类型的对象如果使用基本数据类型的对象在做一些比较时可能会带来一些**不可预期**的结果
比如说
```javascript
var boo1 = new Boolean(true);
var boo2 = new Boolean(true);
console.log(boo1 === boo2); // 打印结果竟然是false
```
再比如说
```javascript
var boo3 = new Boolean(false);
if (boo3) {
console.log('qianguyihao'); // 这行代码竟然执行了
}
```
显然使用 typeof 去检查类型时
## 基本数据类型不能绑定属性和方法 ## 基本数据类型不能绑定属性和方法
@ -71,7 +18,7 @@ console.log(str.aaa); //打印结果为undefined
上方代码中当我们尝试打印`str.aaa`的时候会发现打印结果为undefined也就是说不能给 `string` 绑定属性和方法 上方代码中当我们尝试打印`str.aaa`的时候会发现打印结果为undefined也就是说不能给 `string` 绑定属性和方法
当然我们可以打印 str.lengthstr.indexOf("m")等等因为这两个方法的底层做了数据类型转换**临时** `string` 字符串转换为 `String` 对象然后再调用内置方法也就是我们在上一篇文章中讲到的**包装类** 当然我们可以打印 str.lengthstr.indexOf("m")等等因为这两个方法的底层做了数据类型转换**临时** `string` 字符串转换为 `String` 对象然后再调用内置方法也就是我们在上一中讲到的**包装类**
**2引用数据类型** **2引用数据类型**
@ -97,7 +44,65 @@ console.log(strObj.aaa);
内置对象 Boolean 也有一些自带的方法但是用的不多 内置对象 Boolean 也有一些自带的方法但是用的不多
## 基本包装类型重要 ### 基本包装类型
### 介绍
我们都知道js 中的数据类型包括以下几种
- 基本数据类型StringNumberBooleanNullUndefined
- 引用数据类型Object
JS 为我们提供了三个**基本包装类型**
- String()将基本数据类型字符串转换为 String 对象
- Number()将基本数据类型的数字转换为 Number 对象
- Boolean()将基本数据类型的布尔值转换为 Boolean 对象
通过上面这这三个包装类我们可以**将基本数据类型的数据转换为对象**
代码举例
```javascript
let str1 = 'qianguyihao';
let str2 = new String('qianguyihao');
let num = new Number(3);
let bool = new Boolean(true);
console.log(typeof str1); // 打印结果string
console.log(typeof str2); // 注意打印结果object
```
**需要注意的是**我们在实际应用中一般不会使用基本数据类型的对象如果使用基本数据类型的对象在做一些比较时可能会带来一些**不可预期**的结果
比如说
```javascript
var boo1 = new Boolean(true);
var boo2 = new Boolean(true);
console.log(boo1 === boo2); // 打印结果竟然是false
```
再比如说
```javascript
var boo3 = new Boolean(false);
if (boo3) {
console.log('qianguyihao'); // 这行代码竟然执行了
}
```
显然使用 typeof 去检查类型时
### 基本包装类型的作用
当我们对一些基本数据类型的值去调用属性和方法时浏览器会**临时使用包装类将基本数据类型转换为引用数据类型**这样的话基本数据类型就有了属性和方法然后再调用对象的属性和方法调用完以后再将其转换为基本数据类型 当我们对一些基本数据类型的值去调用属性和方法时浏览器会**临时使用包装类将基本数据类型转换为引用数据类型**这样的话基本数据类型就有了属性和方法然后再调用对象的属性和方法调用完以后再将其转换为基本数据类型
@ -112,7 +117,7 @@ console.log(str.length); // 打印结果11
```js ```js
// 步骤1把简单数据类型 string 转换为 引用数据类型 String保存到临时变量中 // 步骤1把简单数据类型 string 转换为 引用数据类型 String保存到临时变量中
var temp = new String('qianguyihao); var temp = new String('qianguyihao');
// 步骤2把临时变量的值 赋值给 str // 步骤2把临时变量的值 赋值给 str
str = temp; str = temp;
@ -122,7 +127,7 @@ temp = null;
``` ```
### 在底层字符串以字符数组的形式保存 ## 在底层字符串以字符数组的形式保存
在底层字符串是以字符数组的形式保存的代码举例 在底层字符串是以字符数组的形式保存的代码举例

View File

@ -426,7 +426,7 @@ console.log(result); // 打印结果qianguyihao
新的数组 = str.split(分隔符); 新的数组 = str.split(分隔符);
``` ```
解释将一个字符串拆分成一个数组不会改变原字符串 解释通过指定的分隔符将一个字符串拆分成一个**数组**不会改变原字符串
备注`split()`这个方法在实际开发中用得非常多一般来说从接口拿到的 json 数据中经常会收到类似于`"q, i, a, n"`这样的字符串前端需要将这个字符串拆分成`['q', 'i', 'a', 'n']`数组这个时候`split()`方法就派上用场了 备注`split()`这个方法在实际开发中用得非常多一般来说从接口拿到的 json 数据中经常会收到类似于`"q, i, a, n"`这样的字符串前端需要将这个字符串拆分成`['q', 'i', 'a', 'n']`数组这个时候`split()`方法就派上用场了
@ -443,22 +443,24 @@ console.log(array); // 打印结果是数组:["qian", " gu", " yi", " hao"]
```javascript ```javascript
//split()方法:字符串变数组 //split()方法:字符串变数组
var str3 = '生命壹号|许嵩|smyhvae'; var str3 = '千古壹号|qianguyihao|许嵩';
console.log(str3); console.log('结果1' +str3.split()); // 无参数,表示:把整个字符串作为一个元素添加到数组中。
console.log(str3.split()); // 无参数,表示:把字符串作为一个元素添加到数组中。
console.log(str3.split('')); // 参数为空字符串,则表示:分隔字符串中每一个字符,分别添加到数组中 console.log(str3.split('')); // 参数为空字符串,则表示:分隔字符串中每一个字符,分别添加到数组中
console.log(str3.split('|')); // 参数为指定字符,表示:此字符将不会出现在数组的任意一个元素中 console.log(str3.split('|')); // 参数为指定字符,表示:用 '|' 分隔字符串。此分隔符将不会出现在数组的任意一个元素中
console.log(str3.split('许')); // 同 console.log(str3.split('许')); // 同
``` ```
打印结果 打印结果都是数组
![](http://img.smyhvae.com/20200611_2050.png)
![](http://img.smyhvae.com/20180202_1503.png)
## replace() ## replace()