迭代器:for-in&&for-of和神级forEach

递归是重复调用函数自身实现循环。
迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。



### 数组 我们知道数组的定义是`a = new Array()`,然后对于给予赋值`a = [1, 2, 3]`。 得出a是Array所new 的一个对象,他的每个元素被视为一个`属性值`,从`0`开始对其索引。

for-in 方法

prop in object -MDN
采用for-in对数组对象a进行遍历

var a = [1, 2, 3];

for(let i in a){
    console.log(a[i]);
    // 打印出 1 2 3  
    
    console.log(i);
    // 打印出 0 1 2
} 

当我们给予对象a新的属性时候又会是怎样的效果?

var a = [1, 2, 3];
a.name = "kaso";

for(let i in a){
    console.log(a[i]);
    // 打印出 1 2 3 kaso 
    
    console.log(i);
    // 打印出 0 1 2 name
} 

可以看到for-in语句将对象a中所有的属性都遍历的一遍,但是如果我们想要的只是将数组中进行遍历又要怎么写呢?



for-of 方法

仅打印出集合内的元素。

var a = ['A', 'B', 'C'];
a.name = 'Hello';

for (var x of a) {
    console.log(x); // 'A', 'B', 'C'
}


forEach 方法

a=new Map;
a=[5,1,2,["name","kaso"],["age",20]];

a.forEach(function (element, index, array) {
    // element: 指向当前元素的值
    // index: 指向当前索引
    // array: 指向Array对象本身
    console.log(`${element}, index = ${index}`);
    console.log(`array`)
});

/*
* 输出结果
* 5, index = 0
* 1, index = 1
* 2, index = 2
* name,kaso, index = 3
* age,20, index = 4
* 5 1 2 name kaso age 20
*/

key等同于array,输出值列

posted @ 2018-03-24 21:26  Kaso基佬康  阅读(140)  评论(0编辑  收藏  举报