@@ -512,7 +512,7 @@ a2 // [2, 4, 6, 8]
512
512
513
513
注意,数组推导中,` for...of ` 结构总是写在最前面,返回的表达式写在最后面。
514
514
515
- for...of后面还可以附加if语句 ,用来设定循环的限制条件。
515
+ ` for...of ` 后面还可以附加 ` if ` 语句 ,用来设定循环的限制条件。
516
516
517
517
``` javascript
518
518
var years = [ 1954 , 1974 , 1990 , 2006 , 2010 , 2014 ];
@@ -527,9 +527,33 @@ var years = [ 1954, 1974, 1990, 2006, 2010, 2014 ];
527
527
// [ 2006]
528
528
```
529
529
530
- 上面代码表明,if语句写在for ...of与返回的表达式之间,可以使用多个if语句 。
530
+ 上面代码表明,` if ` 语句要写在 ` for ...of ` 与返回的表达式之间,而且可以多个 ` if ` 语句连用 。
531
531
532
- 数组推导可以替代map和filter方法。
532
+ 下面是另一个例子。
533
+
534
+ ``` javascript
535
+ var customers = [
536
+ {
537
+ name: ' Jack' ,
538
+ age: 25 ,
539
+ city: ' New York'
540
+ },
541
+ {
542
+ name: ' Peter' ,
543
+ age: 30 ,
544
+ city: ' Seattle'
545
+ }
546
+ ];
547
+
548
+ var results = [
549
+ for (c of customers)
550
+ if (c .city == " Seattle" )
551
+ { name: c .name , age: c .age }
552
+ ];
553
+ results // { name: "Peter", age: 30 }
554
+ ```
555
+
556
+ 数组推导可以替代` map ` 和` filter ` 方法。
533
557
534
558
``` javascript
535
559
[for (i of [1 , 2 , 3 ]) i * i];
@@ -541,14 +565,14 @@ var years = [ 1954, 1974, 1990, 2006, 2010, 2014 ];
541
565
[1 ,4 ,2 ,3 ,- 8 ].filter (function (i ) { return i < 3 });
542
566
```
543
567
544
- 上面代码说明,模拟map功能只要单纯的for ...of循环就行了,模拟filter功能除了for ...of循环,还必须加上if语句 。
568
+ 上面代码说明,模拟 ` map ` 功能只要单纯的 ` for ...of ` 循环就行了,模拟 ` filter ` 功能除了 ` for ...of ` 循环,还必须加上 ` if ` 语句 。
545
569
546
- 在一个数组推导中,还可以使用多个for ...of结构 ,构成多重循环。
570
+ 在一个数组推导中,还可以使用多个 ` for ...of ` 结构 ,构成多重循环。
547
571
548
572
``` javascript
549
- var a1 = [" x1 " , " y1 " ];
550
- var a2 = [" x2 " , " y2 " ];
551
- var a3 = [" x3 " , " y3 " ];
573
+ var a1 = [' x1 ' , ' y1 ' ];
574
+ var a2 = [' x2 ' , ' y2 ' ];
575
+ var a3 = [' x3 ' , ' y3 ' ];
552
576
553
577
[for (s of a1) for (w of a2) for (r of a3) console .log (s + w + r)];
554
578
// x1x2x3
@@ -561,9 +585,9 @@ var a3 = ["x3", "y3"];
561
585
// y1y2y3
562
586
```
563
587
564
- 上面代码在一个数组推导之中,使用了三个for ...of结构 。
588
+ 上面代码在一个数组推导之中,使用了三个 ` for ...of ` 结构 。
565
589
566
- 需要注意的是,数组推导的方括号构成了一个单独的作用域,在这个方括号中声明的变量类似于使用let语句声明的变量 。
590
+ 需要注意的是,数组推导的方括号构成了一个单独的作用域,在这个方括号中声明的变量类似于使用 ` let ` 语句声明的变量 。
567
591
568
592
由于字符串可以视为数组,因此字符串也可以直接用于数组推导。
569
593
@@ -577,16 +601,6 @@ var a3 = ["x3", "y3"];
577
601
578
602
数组推导需要注意的地方是,新数组会立即在内存中生成。这时,如果原数组是一个很大的数组,将会非常耗费内存。
579
603
580
- 推导的用法不限于数组,还可以直接使用。
581
-
582
- ``` javascript
583
- var results = (
584
- for (c of customers)
585
- if (c .city == " Seattle" )
586
- { name: c .name , age: c .age }
587
- )
588
- ```
589
-
590
604
## Array.observe(),Array.unobserve()
591
605
592
606
这两个方法用于监听(取消监听)数组的变化,指定回调函数。
0 commit comments