详尽分享遍历对象的几种方法

简介: 详尽分享遍历对象的几种方法

一、for in

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

const person=Object.create({

// sex和height是原型链上的属性

sex:'male',

height:168

});

//name和age是属于对象的属性

person.name='sunny';

person.age=28;

//sex和height出现在了原型链上而不是对象属性中

console.log(person);

//for in会将对象的属性和原型上的属性一块遍历出来,顺序是先对象属性然后是原型链上的属性

for(let key in person){

console.log(person【key】);//sunny 28 male 168

}

//如果需要过滤掉原型链上的属性,可以使用asOwnProperty()方法

for(let key in person){

if (person.hasOwnProperty(key)) {

console.log(person【key】) //sunny 28

}//代码效果参考:http://www.ezhiqi.com/bx/art_6523.html

}

二、Object.keys

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

    const person=Object.create({

    // sex和height是原型链上的属性

  sex:'male',

    height:168

    });

//name和age是属于对象的属性

person.name='sunny';

person.age=28;

//这种方法不会遍历原型链上的属性

Object.keys(person).forEach((key) => {

console.log(person【key】) // sunny 28

})

三、Object.getOwnPropertyNames()

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

// 创建一个对象并指定其原型,bar 为原型上的属性

// baz 为对象自身的属性并且不可枚举

const obj = Object.create({

bar: 'bar'

}, {

baz: {

value: 'baz',

enumerable: false

}

}//代码效果参考:http://www.ezhiqi.com/bx/art_2557.html)

obj.foo = 'foo'

// 不包括不可枚举的 baz 属性

Object.keys(obj).forEach((key) => {

console.log(obj【key】) // foo

})

// 包括不可枚举的 baz 属性

Object.getOwnPropertyNames(obj).forEach((key) => {

console.log(obj【key】) // baz, foo

})

除此之外还有:Object.getOwnPropertySymbols()、Reflect.ownKeys等,详细讲解见如有侵权请联系删除)

相关文章
|
开发框架 .NET C#
c#数组补充
c#数组的几个简单的补充
46 0
|
5月前
集合中常见方法及遍历方式
集合中常见方法及遍历方式
36 1
|
6月前
|
存储 算法 搜索推荐
|
8月前
|
C#
C#学习相关系列之自定义遍历器
C#学习相关系列之自定义遍历器
|
8月前
|
存储 C++
关于数组的基本要点
关于数组的基本要点
57 0
|
前端开发
前端学习案例2-对象的遍历2
前端学习案例2-对象的遍历2
84 0
前端学习案例2-对象的遍历2
|
前端开发
前端学习案例11-数组遍历方法3-修改this指向
前端学习案例11-数组遍历方法3-修改this指向
103 0
前端学习案例11-数组遍历方法3-修改this指向
|
前端开发
前端学习案例1-对象的遍历1
前端学习案例1-对象的遍历1
80 0
前端学习案例1-对象的遍历1
|
前端开发
前端学习案例3-数组的删改方法1slice
前端学习案例3-数组的删改方法1slice
74 0
前端学习案例3-数组的删改方法1slice
|
前端开发
前端学习案例5-深拷贝的递归3数组判断
前端学习案例5-深拷贝的递归3数组判断
76 0
前端学习案例5-深拷贝的递归3数组判断