for in for of 区别

在 开发过程中 习惯使用 for in  对 for  of (ES6 新增的)也是一知半解,看完这个 你就会喜欢上 for of   

1:for in 得到的是 索引(键值) key, obj[key]  

2:for in 会遍历对象整个原型链 ,要用 hasOwnProperty(key) 判断

3:fon in 会返回数组 自定的属性 比如 定义个 arr['a'] =  90

4:for of  可遍历可迭代的数据  array string set map argument, 但就是不能遍历普通对象 报错  XXXX is not iterable

5:for of 得到的是 值

6:上面说 for of 不能遍历对象 但使用 Object.entries(obj) 就可以遍历了 这是ES8新增的api

let arr = [10, 20, 30, 40, 50]
arr['a'] =  90 let obj
= { name: 'xxx', age: 18, city: ["xx1", "xx2"] }
  for (let key in obj) {
     if (obj.hasOwnProperty(key)){
       console.log(key, obj[key])
     }
   }

   for(let key in arr){
     if(arr.hasOwnProperty(key)){
       console.log(key, arr[key])
     }
   }
 
 
// 结果 是 key  arr[key] 的形式

0 10
1 20
2 30
3 40
4 50
a 90 // 这个不应输出出来 这个是污染值

 


for (let value of arr) {
   console.log(value)
}
// 结果 value
10
20
30
40
50


for (let [key, value] of Object.entries(obj)) {
   console.log(key, value)
}

//最后还有两个 api 很好用 ,字面意思就是 获取值 获取key
  Object.keys(obj)
  Object.values(obj)
 

let  strKey = Object.keys(obj).filter((item) => item === 'age' )
    console.log(strKey)
 

 

posted @ 2021-04-20 11:23  lyr2  阅读(164)  评论(0)    收藏  举报