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

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

一、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等,详细讲解见如有侵权请联系删除)

相关文章
|
2月前
|
C#
C#学习相关系列之自定义遍历器
C#学习相关系列之自定义遍历器
|
2月前
|
算法 Java 程序员
Java数组全套深入探究——基础知识阶段4、数组的遍历
Java数组全套深入探究——基础知识阶段4、数组的遍历
50 0
|
2月前
|
存储 C++
关于数组的基本要点
关于数组的基本要点
39 0
|
8月前
|
人工智能 算法 机器人
List 函数排序操作,用对方法事半功倍!
作为一名程序员,以下这些场景你肯定不陌生, 1.数据分析和处理:在处理大量数据时,需要对数据进行排序以进行进一步的分析和处理。例如,在市场调研中,可能需要按照客户的购买频率对客户列表进行排序,以确定哪些客户最有可能购买产品或服务。 2.报表生成:在生成报表时,往往需要按照特定的顺序对数据进行排列,以便清晰地展示数据。例如,在制定销售报告时,可能需要按照销售额对产品进行排序,以了解哪些产品的销售额最高。 ......
|
前端开发
前端学习案例2-对象的遍历2
前端学习案例2-对象的遍历2
68 0
前端学习案例2-对象的遍历2
|
前端开发
前端学习案例5-迭代器和生成器5 原
前端学习案例5-迭代器和生成器5 原
57 0
前端学习案例5-迭代器和生成器5 原
|
前端开发
前端学习案例1-对象的遍历1
前端学习案例1-对象的遍历1
55 0
前端学习案例1-对象的遍历1
|
JavaScript 前端开发 编译器
图解 Google V8 # 15:隐藏类:如何在内存中快速查找对象属性?
图解 Google V8 # 15:隐藏类:如何在内存中快速查找对象属性?
140 0
图解 Google V8 # 15:隐藏类:如何在内存中快速查找对象属性?
|
存储 算法 前端开发
嵌套遍历同一个数组的时候,试试Map优化
嵌套遍历同一个数组的时候,试试Map优化
123 0
六个方法两个拷贝带你透彻对象合并问题
实际场景下,我们经常需要进行对象合并的操作,而有时候原对象的改变会改变合并后的对象,这是一个非常严重的问题,涉及到了合并对象中的深浅拷贝,递归遍历,让人发蒙。
123 1