js遍历对象的方法

遍历对象的方法

        一、for...in       

        二、Object.keys()

        三、Object.getOwnPropertyNames()


一、for...in         

        for in循环是最基础的遍历对象的方式,它还会得到对象原型链上的属性

//对象
var obj = {
     name: 'Lina',
     sex: 'boy',
     age: '18',
     height: '185',
   }

for (let i in obj) {
     console.log(i, obj[i])  //i是键名,obj[i]是键值
 }

 //数组
var arr = ['Lina', 'boy', '18', '185']

 for (let i in arr) {
     console.log(i, arr[i])  //i是index,arr[i]是item
 }

二、Object.keys()

        Object.keys()是ES5新增的一个对象方法,该方法返回对象自身属性名组成的数组,他会自动过滤掉原型链上的属性,然后可以通过数组的forEach()方法来遍历。

var obj = {
       name: 'Lina',
       sex: 'boy',
       age: '18',
       height: '185',
   }

for (let item of Object.keys(obj)) {
    console.log(item)
} // 遍历返回键名

for (let item of Object.values(obj)) {
    console.log(item)
} // 遍历返回键值

for (let item of Object.entries(obj)) {
    console.log(item)
}  // 返回键值对组成的数组,如:['key', 'value']

三、Object.getOwnPropertyNames()

        也是ES5新增的一个对象方法,该方法返回对象自身属性名组成的数组,包括不可枚举的属性,也可以通过数组的forEach()方法来遍历。

var obj = {
       name: 'Lina',
       sex: 'boy',
       age: '18',
       height: '185',
   }

Object.getOwnPropertyNames(obj).forEach(key => {
     console.log(key, obj[key])
 })

只有 for in 循环会得到对象原型链上的属性,其它方法都只适用于对象自身的属性ES 语言后续添加的新特性不会对以前的代码产生副作用,比如在 ES2015 之前就存在的 for in 循环。

Object.keys() 和 Object.getOwnPropertyNames() 是肯定不会返回 Symbol 属性的。

Object.getOwnPropertyNames() 和 Object.getOwnPropertySymbols() 互补,一个得到普通属性,一个得到 Symbol 属性,都包括不可枚举的属性。

除此之外还有:Object.getOwnPropertySymbols()、Reflect.ownKeys等,详细讲解见JS遍历对象的几种方法_这片林子好大的博客-CSDN博客_js对象遍历(如有侵权请联系删除)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值