for-in、for-of和forEach
共性:
for of
、for in
、forEach
都是用来遍历的
区别:
for in
语句用于遍历数组或者对象,得到的是对象的key
或者数组的index
,但有时候以随机顺序遍历数组。for in
可以遍历到原型链上的属性或方法和手动添加的其他键。for of
和forEach
不能用于遍历对象。for of
是ES6新增的,为了解决for in
随机遍历数组的问题,for of
遍历数组得到的是value
。forEach
可以遍历数组或者set
或者map
,不能遍历伪数组,得到的是value
。for of
和forEach
不同的是,for of
可以与break、continue、return
配合使用,也就是可以随时退出循环。
推荐for in
遍历对象,for of
遍历数组
// for...in遍历对象
const obj = {uname:"李四", age: 10, gender: "男"};
for(let k in obj) {
console.log(k); // key
console.log(obj[k]); // value
}
// for...of遍历数组
const arr = [1, 2, 3, 4]
for(let key of arr) {
console.log(key); // value
}
forEach
方法对数组/Map/Set
中的每个元素执行一次提供的函数。该函数接受三个参数:
(1)正在操作的元素的内容
(2)正在操作的元素的索引
(3)正在操作的数组本身。
let array = [9, 8, 7, 6, 5, 4];
array.forEach((value, index) => {
console.log(index); // 得到的是索引
});