@@ -234,7 +234,7 @@ const [first, ...middle, last] = [1, 2, 3, 4, 5];
234
234
[... ' x\uD83D\uDE80 y' ].length // 3
235
235
```
236
236
237
- 上面代码的第一种写法,JavaScript 会将四个字节的 Unicode 字符,识别为2个字符 ,采用扩展运算符就没有这个问题。因此,正确返回字符串长度的函数,可以像下面这样写。
237
+ 上面代码的第一种写法,JavaScript 会将四个字节的 Unicode 字符,识别为 2 个字符 ,采用扩展运算符就没有这个问题。因此,正确返回字符串长度的函数,可以像下面这样写。
238
238
239
239
``` javascript
240
240
function length (str ) {
@@ -322,7 +322,7 @@ let arr = [...obj]; // TypeError: Cannot spread non-iterable object
322
322
323
323
## Array.from()
324
324
325
- ` Array.from ` 方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map )。
325
+ ` Array.from ` 方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map )。
326
326
327
327
下面是一个类似数组的对象,` Array.from ` 将它转为真正的数组。
328
328
@@ -341,7 +341,7 @@ var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c']
341
341
let arr2 = Array .from (arrayLike); // ['a', 'b', 'c']
342
342
```
343
343
344
- 实际应用中,常见的类似数组的对象是DOM操作返回的NodeList集合 ,以及函数内部的` arguments ` 对象。` Array.from ` 都可以将它们转为真正的数组。
344
+ 实际应用中,常见的类似数组的对象是 DOM 操作返回的 NodeList 集合 ,以及函数内部的` arguments ` 对象。` Array.from ` 都可以将它们转为真正的数组。
345
345
346
346
``` javascript
347
347
// NodeList对象
@@ -359,7 +359,7 @@ function foo() {
359
359
360
360
上面代码中,` querySelectorAll ` 方法返回的是一个类似数组的对象,可以将这个对象转为真正的数组,再使用` forEach ` 方法。
361
361
362
- 只要是部署了Iterator接口的数据结构 ,` Array.from ` 都能将其转为数组。
362
+ 只要是部署了 Iterator 接口的数据结构 ,` Array.from ` 都能将其转为数组。
363
363
364
364
``` javascript
365
365
Array .from (' hello' )
@@ -369,7 +369,7 @@ let namesSet = new Set(['a', 'b'])
369
369
Array .from (namesSet) // ['a', 'b']
370
370
```
371
371
372
- 上面代码中,字符串和Set结构都具有Iterator接口 ,因此可以被` Array.from ` 转为真正的数组。
372
+ 上面代码中,字符串和 Set 结构都具有 Iterator 接口 ,因此可以被` Array.from ` 转为真正的数组。
373
373
374
374
如果参数是一个真正的数组,` Array.from ` 会返回一个一模一样的新数组。
375
375
@@ -418,7 +418,7 @@ Array.from([1, 2, 3], (x) => x * x)
418
418
// [1, 4, 9]
419
419
```
420
420
421
- 下面的例子是取出一组DOM节点的文本内容 。
421
+ 下面的例子是取出一组 DOM 节点的文本内容 。
422
422
423
423
``` javascript
424
424
let spans = document .querySelectorAll (' span.name' );
@@ -458,7 +458,7 @@ Array.from({ length: 2 }, () => 'jack')
458
458
459
459
上面代码中,` Array.from ` 的第一个参数指定了第二个参数运行的次数。这种特性可以让该方法的用法变得非常灵活。
460
460
461
- ` Array.from() ` 的另一个应用是,将字符串转为数组,然后返回字符串的长度。因为它能正确处理各种Unicode字符,可以避免JavaScript将大于 ` \uFFFF ` 的Unicode字符,算作两个字符的bug 。
461
+ ` Array.from() ` 的另一个应用是,将字符串转为数组,然后返回字符串的长度。因为它能正确处理各种 Unicode 字符,可以避免 JavaScript 将大于 ` \uFFFF ` 的 Unicode 字符,算作两个字符的 bug 。
462
462
463
463
``` javascript
464
464
function countSymbols (string ) {
@@ -484,7 +484,7 @@ Array(3) // [, , ,]
484
484
Array (3 , 11 , 8 ) // [3, 11, 8]
485
485
```
486
486
487
- 上面代码中,` Array ` 方法没有参数、一个参数、三个参数时,返回结果都不一样。只有当参数个数不少于2个时 ,` Array() ` 才会返回由参数组成的新数组。参数个数只有一个时,实际上是指定数组的长度。
487
+ 上面代码中,` Array ` 方法没有参数、一个参数、三个参数时,返回结果都不一样。只有当参数个数不少于 2 个时 ,` Array() ` 才会返回由参数组成的新数组。参数个数只有一个时,实际上是指定数组的长度。
488
488
489
489
` Array.of ` 基本上可以用来替代` Array() ` 或` new Array() ` ,并且不存在由于参数不同而导致的重载。它的行为非常统一。
490
490
@@ -516,7 +516,7 @@ Array.prototype.copyWithin(target, start = 0, end = this.length)
516
516
它接受三个参数。
517
517
518
518
- target(必需):从该位置开始替换数据。
519
- - start(可选):从该位置开始读取数据,默认为0 。如果为负值,表示倒数。
519
+ - start(可选):从该位置开始读取数据,默认为 0 。如果为负值,表示倒数。
520
520
- end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数。
521
521
522
522
这三个参数都应该是数值,如果不是,会自动转为数值。
@@ -526,7 +526,7 @@ Array.prototype.copyWithin(target, start = 0, end = this.length)
526
526
// [4, 5, 3, 4, 5]
527
527
```
528
528
529
- 上面代码表示将从3号位直到数组结束的成员(4和5),复制到从0号位开始的位置,结果覆盖了原来的1和2 。
529
+ 上面代码表示将从 3 号位直到数组结束的成员(4 和 5),复制到从 0 号位开始的位置,结果覆盖了原来的 1 和 2 。
530
530
531
531
下面是更多例子。
532
532
@@ -563,7 +563,7 @@ i32a.copyWithin(0, 2);
563
563
// -5
564
564
```
565
565
566
- 上面代码找出数组中第一个小于0的成员 。
566
+ 上面代码找出数组中第一个小于 0 的成员 。
567
567
568
568
``` javascript
569
569
[1 , 5 , 10 , 15 ].find (function (value , index , arr ) {
@@ -595,7 +595,7 @@ i32a.copyWithin(0, 2);
595
595
596
596
上面代码中,` indexOf ` 方法无法识别数组的` NaN ` 成员,但是` findIndex ` 方法可以借助` Object.is ` 方法做到。
597
597
598
- ## 数组实例的fill ()
598
+ ## 数组实例的 fill ()
599
599
600
600
` fill ` 方法使用给定值,填充一个数组。
601
601
@@ -616,7 +616,7 @@ new Array(3).fill(7)
616
616
// ['a', 7, 'c']
617
617
```
618
618
619
- 上面代码表示,` fill ` 方法从1号位开始,向原数组填充7,到2号位之前结束 。
619
+ 上面代码表示,` fill ` 方法从 1 号位开始,向原数组填充 7,到 2 号位之前结束 。
620
620
621
621
## 数组实例的 entries(),keys() 和 values()
622
622
@@ -715,7 +715,7 @@ contains(['foo', 'bar'], 'baz'); // => false
715
715
Array (3 ) // [, , ,]
716
716
```
717
717
718
- 上面代码中,` Array(3) ` 返回一个具有3个空位的数组 。
718
+ 上面代码中,` Array(3) ` 返回一个具有 3 个空位的数组 。
719
719
720
720
注意,空位不是` undefined ` ,一个位置的值等于` undefined ` ,依然是有值的。空位是没有任何值,` in ` 运算符可以说明这一点。
721
721
@@ -724,7 +724,7 @@ Array(3) // [, , ,]
724
724
0 in [, , ,] // false
725
725
```
726
726
727
- 上面代码说明,第一个数组的0号位置是有值的,第二个数组的0号位置没有值 。
727
+ 上面代码说明,第一个数组的 0 号位置是有值的,第二个数组的 0 号位置没有值 。
728
728
729
729
ES5 对空位的处理,已经很不一致了,大多数情况下会忽略空位。
730
730
@@ -816,4 +816,3 @@ for (let i of arr) {
816
816
```
817
817
818
818
由于空位的处理规则非常不统一,所以建议避免出现空位。
819
-
0 commit comments