JS中数组和对象有几种遍历方式?优缺点?

数组:

1.for循环遍历
2.while遍历
3.for...in
4.for...of
5.forEach
6.map

对象:

1.for...in
2.for...of(少用,尽量不用,直接用会出错)
3.Object.keys()
4.Object.getOwnPropertyNames()
5.Object.getOwnPropertySymbol()
6.Reflect.ownKeys()

for…in和for…of的区别:

1.推荐循环对象属性时使用for...in,遍历数组时使用for...of;
2.for...in循环出的是key,for...of循环出的是value;
3.for...of是es6新引入的特性,修复了es5引入的for...in的不足;
4.for...of不能循环普通的对象,需要通过Object.keys()搭配使用;