因为之前老是遇到这两个都忘记怎么使用,今天就把他们都写下来,给自己留个笔记,也希望能够帮到有需要的朋友。
**
for…in
var arr1 = ["zou", "liu", "chen", "yang", "li", "wu"];
var arr2 = {
"name": "益达",
"age": 24,
"sex": "男",
"birth": "1996-03-06"
};
for (let i in arr2) {
console.log(i);
}
for (let j in arr1) {
console.log(j);
}
结果如下:
由此可以看出,for…in是遍历数组或者对象的下标值,也就是所谓的key值,
倘如你要使用for…in来遍历值(value)的话就要这样:
var arr1 = ["zou", "liu", "chen", "yang", "li", "wu"];
var arr2 = {
"name": "益达",
"age": 24,
"sex": "男",
"birth": "1996-03-06"
};
for (let i in arr2) {
console.log(arr2[i]);
}
for (let j in arr1) {
console.log(arr1[j]);
}
输出:
这里要说下的是一般访问对象的话会用arr2.name这种方式来访问value值,但是在for…in循环里不能用这种方式来访问获取到对应的value值,上图:
var arr2 = {
"name": "益达",
"age": 24,
"sex": "男",
"birth": "1996-03-06"
};
for (let i in arr2) {
console.log(arr2.i);
}
结果是四个undefined,具体原因也不是很清楚,欢迎有知道的朋友下方评论区评论。
总结:如果仅仅只是为了获取key值,那么for…in还是可以使用的
for…of
var arr1 = ["zou", "liu", "chen", "yang", "li", "wu"];
var arr2 = {
"name": "益达",
"age": 24,
"sex": "男",
"birth": "1996-03-06"
};
for (let k of arr1) {
console.log(k);
}
for (let l in arr1) {
console.log(l);
}
结果:
可以看到for…of是可以用来遍历对象或者数组的value值的。
另外这里顺带提一下forEach()这个 方法对数组是每个元素执行一次提供的函数,公因式:数组.forEach(function(数组的value,数组的key,数组本身){…})
forEach按照需要场景使用,这里只是提一下