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)

浙公网安备 33010602011771号