递归是重复调用函数自身实现循环。
迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。
### 数组 我们知道数组的定义是`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
,输出值列