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

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

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

相关文章
|
4月前
|
存储 算法 搜索推荐
|
6月前
|
C#
C#学习相关系列之自定义遍历器
C#学习相关系列之自定义遍历器
|
6月前
|
算法 Java 程序员
Java数组全套深入探究——基础知识阶段4、数组的遍历
Java数组全套深入探究——基础知识阶段4、数组的遍历
67 0
|
6月前
|
存储 Java 程序员
Java数组全套深入探究——基础知识阶段3、数组下标操作
Java数组全套深入探究——基础知识阶段3、数组下标操作
71 0
|
6月前
|
存储 Java 程序员
Java数组全套深入探究——基础知识阶段2、数组的定义语法
Java数组全套深入探究——基础知识阶段2、数组的定义语法
67 0
|
6月前
|
存储 C++
关于数组的基本要点
关于数组的基本要点
49 0
|
人工智能 算法 机器人
List 函数排序操作,用对方法事半功倍!
作为一名程序员,以下这些场景你肯定不陌生, 1.数据分析和处理:在处理大量数据时,需要对数据进行排序以进行进一步的分析和处理。例如,在市场调研中,可能需要按照客户的购买频率对客户列表进行排序,以确定哪些客户最有可能购买产品或服务。 2.报表生成:在生成报表时,往往需要按照特定的顺序对数据进行排列,以便清晰地展示数据。例如,在制定销售报告时,可能需要按照销售额对产品进行排序,以了解哪些产品的销售额最高。 ......
|
前端开发
前端学习案例2-对象的遍历2
前端学习案例2-对象的遍历2
72 0
前端学习案例2-对象的遍历2
|
前端开发
前端学习案例1-对象的遍历1
前端学习案例1-对象的遍历1
69 0
前端学习案例1-对象的遍历1
|
Python 容器
【Python零基础入门篇 · 20】:可迭代对象和迭代器的转换、自定义迭代器类、异常类、生成器
【Python零基础入门篇 · 20】:可迭代对象和迭代器的转换、自定义迭代器类、异常类、生成器
142 0
【Python零基础入门篇 · 20】:可迭代对象和迭代器的转换、自定义迭代器类、异常类、生成器