一般for in
遍历的是对象或者数组的索引(键名),而for of
遍历的是数组的元素值,不包括数组的原型
-
for of
- for of适合遍历循环数组/字符串/map/set等拥有迭代器对象的集合,但是不能遍历普通的对象,因为没有迭代器,会报错
obj is not iterable
let arr=["a","b","c"]; let obj={ name:"张三", age:18, job:"IT" }; for (let value of arr){ console.log(value);//a b c } //for of不能遍历普通的对象,因为没有迭代器,会报错 for (let value of obj){ console.log(value)//obj is not iterable }
for of
遍历不能获取index索引值,可以先将数组转成map
结构,再用for of
遍历这个map
,就可以获取索引index
,值value
let arr=["a","b","c"]; for (let [key,value] of new Map(arr.map((item,index)=> [index,item]))){ console.log(key,value) }
for of
与forEach
不同的是,它可以正确的响应break,continue,return
- for of适合遍历循环数组/字符串/map/set等拥有迭代器对象的集合,但是不能遍历普通的对象,因为没有迭代器,会报错
-
for in
有三个缺点,所以for in
不适合遍历数组,适合遍历对象- 顺序可能不会按照实际数组的内部顺序
for in
会遍历数组所有的可枚举性,包括原型index
索引值是字符串的数字,不能直接进行集合运算
网友评论