Web/10-ES6/06-ES6:字符串、数组、对象的扩展.md

219 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 字符串的扩展
ES6中的字符串扩展用得少而且逻辑相对简单。如下
- `includes(str)`:判断是否包含指定的字符串
- `startsWith(str)`:判断是否以指定字符串开头
- `endsWith(str)`:判断是否以指定字符串结尾
- `repeat(count)`:重复指定次数
举例如下:
```javascript
let str = 'abcdefg';
console.log(str.includes('a'));//true
console.log(str.includes('h'));//false
//startsWith(str) : 判断是否以指定字符串开头
console.log(str.startsWith('a'));//true
console.log(str.startsWith('d'));//false
//endsWith(str) : 判断是否以指定字符串结尾
console.log(str.endsWith('g'));//true
console.log(str.endsWith('d'));//false
//repeat(count) : 重复指定次数a
console.log(str.repeat(5));
```
打印结果:
20180402_1050.png
## 数值的扩展
- 二进制与八进制数值表示法: 二进制用`0b`, 八进制用`0o`
举例:
```javascript
console.log(0b1010);//10
console.log(0o56);//46
```
- `Number.isFinite(i)`:判断是否为有限大的数。比如`Infinity`这种无穷大的数返回的就是false。
- `Number.isNaN(i)`判断是否为NaN。
- `Number.isInteger(i)`:判断是否为整数。
- `Number.parseInt(str)`:将字符串转换为对应的数值。
- `Math.trunc(i)`:去除小数部分。
举例:
```javascript
//Number.isFinite(i) : 判断是否是有限大的数
console.log(Number.isFinite(NaN)); //false
console.log(Number.isFinite(5)); //true
console.log(Number.isFinite(Infinity)); //false
//Number.isNaN(i) : 判断是否是NaN
console.log(Number.isNaN(NaN));//true
console.log(Number.isNaN(5));//falsse
//Number.isInteger(i) : 判断是否是整数
console.log(Number.isInteger(5.23));//false
console.log(Number.isInteger(5.0));//true
console.log(Number.isInteger(5));//true
//Number.parseInt(str) : 将字符串转换为对应的数值
console.log(Number.parseInt('123abc'));//123
console.log(Number.parseInt('a123abc'));//NaN
// Math.trunc(i) : 直接去除小数部分
console.log(Math.trunc(13.123));//13
```
## 数组的扩展
### 扩展1
```javascript
Array.from(伪数组/可遍历的对象)
```
**作用**:将伪数组对象或可遍历对象转换为真数组。
**举例:**
```html
<body>
<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<script>
let btnArray = document.getElementsByTagName('button');
console.log(btnArray);
console.log(btnArray[0]);
</script>
</body>
```
上面的布局中有三个button标签我们通过`getElementsByTagName`获取到的`btnArray`实际上是**伪数组**,并不是真实的数组:
20180402_1116.png
既然`btnArray`是伪数组,它就不能使用数组的一般方法,否则会报错:
20180402_1121.png
解决办法:采用`Array.from`方法将`btnArray`这个伪数组转换为真数组即可:
```javascript
Array.from(btnArray);
```
然后就可以使用数组的一般方法了:
20180402_1125.png
### 扩展2
```javascript
Array.of(value1, value2, value3)
```
**作用**:将一系列值转换成数组。
**举例**
```javascript
//Array.of(value1, value2, value3) : 将一系列值转换成数组
let arr = Array.of(1, 'abc', true);
console.log(arr);
```
### 扩展3
- 3. find(function(value, index, arr){return true}) : 找出第一个满足条件返回true的元素
- 4. findIndex(function(value, index, arr){return true}) : 找出第一个满足条件返回true的元素的index
```javascript
```
```javascript
```
```javascript
```
```javascript
```