修改array

This commit is contained in:
Ruan Yifeng
2015-02-26 01:09:05 +08:00
parent 0c99976064
commit caa4f9e993
4 changed files with 118 additions and 2 deletions
+44
View File
@@ -37,6 +37,16 @@ Array.from({ 0: "a", 1: "b", 2: "c", length: 3 });
```
对于还没有部署该方法的浏览器,可以用Array.prototyp.slice方法替代。
```javascript
const toArray = (() =>
Array.from ? Array.from : obj => [].slice.call(obj)
)();
```
Array.from()还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理。
```JavaScript
@@ -170,6 +180,40 @@ for (let [index, elem] of ['a', 'b'].entries()) {
```
## 数组实例的includes()
Array.protypeto.includes方法返回一个布尔值,表示某个数组是否包含给定的值。该方法属于ES7。
```javascript
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, NaN].includes(NaN); // true
```
该方法的第二个参数表示搜索的起始位置,默认为0。
```javascript
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
```
下面代码用来检查当前环境是否支持该方法,如果不支持,部署一个简易的替代版本。
```javascript
const contains = (() =>
Array.prototype.includes
? (arr, value) => arr.includes(value)
: (arr, value) => arr.some(el => el === value)
)();
contains(["foo", "bar"], "baz"); // => false
```
## 数组推导
ES6提供简洁写法,允许直接通过现有数组生成新数组,这被称为数组推导(array comprehension)。