Skip to content

Commit a3a75b7

Browse files
committed
docs: update array methods
1 parent 3cf2f5d commit a3a75b7

File tree

32 files changed

+1426
-549
lines changed

32 files changed

+1426
-549
lines changed

docs/standard-built-in-objects/indexed-collections/array/array.md

Lines changed: 150 additions & 137 deletions
Large diffs are not rendered by default.

docs/standard-built-in-objects/indexed-collections/array/constructor/from.md

Lines changed: 37 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,36 +12,57 @@ order: 3
1212

1313
# Array.from()
1414

15-
`Array.from()` 方法用于将一个类数组对象或可迭代对象转换成一个新的数组实例。
15+
⭐️ `ES2015(ES6)新特性`
1616

17-
该方法为 ECMAScript 2015 新添加的数组方法
17+
`Array.from()` 方法用于将一个类数组对象或可迭代对象转换成一个新的数组实例
1818

1919
## 语法
2020

21+
语法:
22+
2123
```js
22-
Array.from(typedArr [, fn [, arg]])
24+
Array.from(arrayLike [, mapfn [, thisArg]])
25+
```
26+
27+
类型声明:
28+
29+
```ts
30+
interface ArrayLike<T> {
31+
readonly length: number;
32+
readonly [n: number]: T;
33+
}
34+
35+
interface ArrayConstructor {
36+
from<T>(arrayLike: ArrayLike<T>): T[];
37+
38+
from<T, U>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): U[];
39+
}
2340
```
2441

25-
| 参数 | 说明 | 类型 |
26-
| ---------- | -------------------------------------------------------------- | ----------- |
27-
| `typedArr` | 想要转换成数组的伪数组对象或可迭代对象 | typed array |
28-
| `fn` | (可选)如果指定了该参数,新数组中的每个元素会执行该回调函数。 | function |
29-
| `arg` | (可选)执行回调函数 `mapFn``this` 对象 | object |
42+
参数说明:
43+
44+
| 参数 | 说明 | 类型 |
45+
| :-------- | :------------------------------------------------------------- | :---------- |
46+
| arrayLike | 想要转换成数组的伪数组对象或可迭代对象 | typed array |
47+
| mapfn | (可选)如果指定了该参数,新数组中的每个元素会执行该回调函数。 | function |
48+
| thisArg | (可选)执行回调函数 `mapFn``this` 对象 | object |
3049

31-
**返回值:** 一个新的数组实例。
50+
返回值:
3251

33-
## 描述
52+
返回一个新的数组实例。
53+
54+
## 方法说明
3455

3556
- 具备以下两种条件的的对象可以通过 `Array.from()` 方法转换成真正的数组:
3657
- 类数组对象:即拥有 `length` 属性和若干索引属性的任意对象
3758
- 可迭代对象:即部署了 Iterator 接口的对象,可以获取对象中的元素,如 `Map``Set`
38-
- `Array.from()` 方法有一个可选参数 `fn`,让你可以在最后生成的数组上再执行一次 `Array.prototype.map` 方法后再返回。也就是说 `Array.from(typedArr, fn, arg)` 就相当于 `Array.from(typedArr).map(fn, arg)` ,除非创建的不是可用的中间数组。 这对一些数组的子类,如对[类型化数组](../../typed-array-objects/typed-array-objects)来说很重要,因为中间数组的值在调用 `map()` 时需要是适当的类型。
59+
- `Array.from()` 方法有一个可选参数 `mapfn`,让你可以在最后生成的数组上再执行一次 `Array.prototype.map` 方法后再返回。也就是说 `Array.from(arrayLike, mapfn, thisArg)` 就相当于 `Array.from(arrayLike).map(mapfn, thisArg)` ,除非创建的不是可用的中间数组。 这对一些数组的子类,如对[类型化数组](../../typed-array-objects/typed-array-objects)来说很重要,因为中间数组的值在调用 `map()` 时需要是适当的类型。
3960
- `from()``length` 属性为 1 ,即 `Array.from.length === 1`
4061
- 在 ES2015 中, `Class` 语法允许我们为内置类型(比如 `Array`)和自定义类新建子类(比如叫 `SubArray`)。这些子类也会继承父类的静态方法,比如 `SubArray.from()`,调用该方法后会返回子类 `SubArray` 的一个实例,而不是 `Array` 的实例。
4162

42-
## 示例
63+
## 代码示例
4364

44-
### 代码示例
65+
### 基本用法
4566

4667
```js
4768
const bar = ['a', 'b', 'c'];
@@ -114,9 +135,9 @@ const m = [1, 2, 2],
114135
console.log(combine(m, n)); // [1, 2, 3]
115136
```
116137

117-
---
118-
119-
**参考资料:**
138+
## 参考资料
120139

140+
- [MDN: Array.from](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/from)
141+
- [TypeScript: lib.es2015.core.d.ts](https://github.com/microsoft/TypeScript/blob/main/lib/lib.es2015.core.d.ts)
121142
- [Array.from 的妙用](https://segmentfault.com/a/1190000004450221)
122143
- [Array.from 的性能测试](https://jsperf.com/constarray/4)

docs/standard-built-in-objects/indexed-collections/array/constructor/isArray.md

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,56 +16,75 @@ order: 4
1616

1717
### 语法
1818

19+
语法:
20+
1921
```js
20-
Array.isArray( value )
22+
Array.isArray(arg);
2123
```
2224

23-
| 参数 | 说明 | 类型 |
24-
| ------- | ------------ | ---- |
25-
| `value` | 需要检测的值 | any |
25+
类型声明:
26+
27+
```ts
28+
interface ArrayConstructor {
29+
isArray(arg: any): arg is any[];
30+
}
31+
32+
declare var Array: ArrayConstructor;
33+
```
34+
35+
参数说明:
36+
37+
| 参数 | 说明 | 类型 |
38+
| :--- | :----------- | :--- |
39+
| arg | 需要检测的值 | any |
40+
41+
返回值:
2642

27-
**返回值:** 如果对象是 `Array` 的实例,则返回 `true` ;否则为 `false`
43+
如果对象是 `Array` 的实例,则返回 `true` ;否则为 `false`
2844

29-
### 示例
45+
### 代码示例
3046

3147
下面的函数调用都返回 `true`
3248

3349
```js
34-
Array.isArray([])
50+
Array.isArray([]);
3551

36-
Array.isArray([1])
52+
Array.isArray([1]);
3753

38-
Array.isArray(new Array())
54+
Array.isArray(new Array());
3955

40-
Array.isArray(Array.prototype)
56+
Array.isArray(Array.prototype);
4157
```
4258

4359
鲜为人知的事实:其实 `Array.prototype` 也是一个数组。
4460

4561
```js
46-
Array.isArray(Array.prototype)
62+
Array.isArray(Array.prototype);
4763
```
4864

4965
下面的函数调用都返回 `false`
5066

5167
```js
52-
Array.isArray()
68+
Array.isArray();
5369

54-
Array.isArray({})
70+
Array.isArray({});
5571

56-
Array.isArray(null)
72+
Array.isArray(null);
5773

58-
Array.isArray(undefined)
74+
Array.isArray(undefined);
5975

60-
Array.isArray(17)
76+
Array.isArray(17);
6177

62-
Array.isArray('Array')
78+
Array.isArray('Array');
6379

64-
Array.isArray(true)
80+
Array.isArray(true);
6581

66-
Array.isArray(false)
82+
Array.isArray(false);
6783

68-
Array.isArray({ __proto__: Array.prototype })
84+
Array.isArray({ __proto__: Array.prototype });
6985
```
7086

87+
## 参考资料
7188

89+
- [MDN: Array.isArry](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)
90+
- [TypeScript: lib.es5.d.ts](https://github.com/microsoft/TypeScript/blob/main/lib/lib.es5.d.ts)

docs/standard-built-in-objects/indexed-collections/array/constructor/of.md

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,31 @@ order: 5
1616

1717
### 语法
1818

19+
语法:
20+
1921
```js
2022
Array.of( ele0[, ele1[, ...[, eleN ] ] ] )
2123
```
2224

23-
| 参数 | 说明 | 类型 |
24-
| ---------- | ---------------------------------------------- | ---- |
25-
| `elementN` | 任意个参数,将按**顺序**成为返回数组中的元素。 | any |
25+
类型声明:
26+
27+
```ts
28+
interface ArrayConstructor {
29+
of<T>(...items: T[]): T[];
30+
}
31+
```
32+
33+
参数说明:
2634

27-
**返回值:**新的 `Array` 实例。
35+
| 参数 | 说明 | 类型 |
36+
| :------- | :----------------------------------------------- | :--- |
37+
| elementN | 任意个参数,将按 **顺序** 成为返回数组中的元素。 | any |
2838

29-
### 描述
39+
返回值:
40+
41+
新的 `Array` 实例。
42+
43+
### 方法说明
3044

3145
`Array.of()``Array` 构造函数之间的区别在于处理整数参数。
3246

@@ -41,10 +55,15 @@ Array(7); // [ , , , , , , ]
4155
Array(1, 2, 3); // [1, 2, 3]
4256
```
4357

44-
### 示例
58+
### 代码示例
4559

4660
```js
4761
Array.of(1); // [1]
4862
Array.of(1, 2, 3); // [1, 2, 3]
4963
Array.of(undefined); // [undefined]
5064
```
65+
66+
## 参考资料
67+
68+
- [MDN: Array.of](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/of)
69+
- [TypeScript: lib.es2015.core.d.ts](https://github.com/microsoft/TypeScript/blob/main/lib/lib.es2015.core.d.ts)

docs/standard-built-in-objects/indexed-collections/array/prototype/accessor-methods/concat.md

Lines changed: 49 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,41 @@ order: 10
1616

1717
## 语法
1818

19+
语法:
20+
1921
```js
2022
const new_array = old_array.concat( item1[, itemN ] )
2123
```
2224

23-
| 参数 | 描述 | 类型 |
24-
| ------- | -------------------------------------------- | ---- |
25-
| `item1` | 添加到当前数组末尾处的数据项 | any |
26-
| `itemN` | 要添加到当前数组末尾处的其他项,可以有多个。 | any |
25+
类型声明:
26+
27+
```ts
28+
interface ConcatArray<T> {
29+
readonly length: number;
30+
readonly [n: number]: T;
31+
join(separator?: string): string;
32+
slice(start?: number, end?: number): T[];
33+
}
34+
35+
interface Array<T> {
36+
concat(...items: ConcatArray<T>[]): T[];
37+
38+
concat(...items: (T | ConcatArray<T>)[]): T[];
39+
}
40+
```
41+
42+
参数说明:
43+
44+
| 参数 | 描述 | 类型 |
45+
| :---- | :------------------------------------------- | :--- |
46+
| item1 | 添加到当前数组末尾处的数据项 | any |
47+
| itemN | 要添加到当前数组末尾处的其他项,可以有多个。 | any |
48+
49+
返回值:
2750

28-
**返回值:** 新的 `Array` 实例。
51+
返回合并后新的 `Array` 实例。
2952

30-
## 描述
53+
## 方法说明
3154

3255
`concat` 方法创建一个新的数组,它由被调用的对象中的元素组成,每个参数的顺序依次是该参数的元素(如果参数是数组)或参数本身(如果参数不是数组)。它不会递归到嵌套数组参数中。
3356

@@ -38,7 +61,7 @@ const new_array = old_array.concat( item1[, itemN ] )
3861

3962
**注意**:数组/值在连接时保持不变。此外,对于新数组的任何操作(仅当元素不是对象引用时)都不会对原始数组产生影响,反之亦然。
4063

41-
## 示例
64+
## 代码示例
4265

4366
### 连接两个数组
4467

@@ -48,7 +71,8 @@ const new_array = old_array.concat( item1[, itemN ] )
4871
const alpha = ['a', 'b', 'c'];
4972
const numeric = [1, 2, 3];
5073

51-
alpha.concat(numeric); // Outputs: ['a', 'b', 'c', 1, 2, 3]
74+
alpha.concat(numeric);
75+
// Outputs: ['a', 'b', 'c', 1, 2, 3]
5276
```
5377

5478
### 连接三个数组
@@ -62,7 +86,8 @@ const num1 = [1, 2, 3],
6286

6387
const nums = num1.concat(num2, num3);
6488

65-
console.log(nums); // Outputs: [1, 2, 3, 4, 5, 6, 7, 8, 9]
89+
console.log(nums);
90+
// Outputs: [1, 2, 3, 4, 5, 6, 7, 8, 9]
6691
```
6792

6893
### 将值连接到数组
@@ -74,7 +99,8 @@ var alpha = ['a', 'b', 'c'];
7499

75100
var alphaNumeric = alpha.concat(1, [2, 3]);
76101

77-
console.log(alphaNumeric); // Outputs: ['a', 'b', 'c', 1, 2, 3]
102+
console.log(alphaNumeric);
103+
// Outputs: ['a', 'b', 'c', 1, 2, 3]
78104
```
79105

80106
### 合并嵌套数组
@@ -87,20 +113,29 @@ var num2 = [2, [3]];
87113

88114
var nums = num1.concat(num2);
89115

90-
console.log(nums); // Outputs: [[1], 2, [3]]
116+
console.log(nums);
117+
// Outputs: [[1], 2, [3]]
91118

92119
// modify the first element of num1
93120
num1[0].push(4);
94121

95-
console.log(nums); // Outputs: [[1, 4], 2, [3]]
122+
console.log(nums);
123+
// Outputs: [[1, 4], 2, [3]]
96124
```
97125

98126
### 将对象合并为数组
99127

100128
```js
101129
var newArray = Array.prototype.concat.call({ a: 1 }, { b: 2 });
102130

103-
console.log(newArray); // [{ a: 1 }, { b: 2 }]
131+
console.log(newArray);
132+
// [{ a: 1 }, { b: 2 }]
104133

105-
console.log(newArray[0].a); // 1
134+
console.log(newArray[0].a);
135+
// 1
106136
```
137+
138+
## 参考资料
139+
140+
- [MDN: Array.prototype.concat](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/concat)
141+
- [TypeScript: lib.es5.d.ts](https://github.com/microsoft/TypeScript/blob/main/lib/lib.es5.d.ts)
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
nav:
3+
title: 内置对象
4+
order: 2
5+
group:
6+
title: Array
7+
path: /indexed-collections/array/
8+
order: 11
9+
title: Array.prototype.copyWithin
10+
order: 18
11+
---
12+
13+
# Array.prototype.copyWithin()
14+
15+
`Array.prototype.copyWithin()` 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。
16+
17+
## 语法
18+
19+
语法:
20+
21+
```js
22+
arr.copyWithin( target [, start [, end]]);
23+
```
24+
25+
类型声明:
26+
27+
```ts
28+
interface Array<T> {
29+
copyWithin(target: number, start: number, end?: number): this;
30+
}
31+
```
32+
33+
参数说明:
34+
35+
| 参数 | 说明 | 类型 |
36+
| :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----- |
37+
| target | 0 为基底的索引,复制序列到该位置。如果是负数,`target` 将从末尾开始计算。如果 `target` 大于等于数组长度,将不会发生拷贝。如果 `target``start` 之后,复制的序列将被修改以复合数组长度 | number |
38+
| start | 0 为基底的索引,开始复制元素的起始位置。如果是负数,`start` 将从末尾开始计算。如果 `start` 被忽略,`copyWithin` 将会从 0 开始复制。 | number |
39+
| end | 0 为基底的索引,开始复制元素的结束位置。`copyWithin` 将会拷贝到该位置,但不包括 `end` 这个位置的元素。如果是负数,`end` 将从末尾开始计算。如果 `end` 被忽略,`copyWithin` 方法将会一直复制至数组结尾(默认为数组长度) | number |
40+
41+
## 参考资料
42+
43+
- [MDN: Array.prototype.copyWithin](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin)
44+
- [TypeScript: lib.es2015.core.d.ts](https://github.com/microsoft/TypeScript/blob/main/lib/lib.es2015.core.d.ts)

0 commit comments

Comments
 (0)