遍历对象的几种方法是什么_js遍历list对象集合

遍历对象的几种方法是什么_js遍历list对象集合一、for in for in循环是最基础的遍历对象的方式,它还会得到对象原型链上的属性 const person=Object.create({ // sex和height是原型链上的属性 sex:'male', height:168});//name和age是属于对象的属性per

遍历对象的几种方法是什么_js遍历list对象集合"

一、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
}
}

二、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
  }
})
 
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等,详细讲解见https://blog.csdn.net/m0_47492529/article/details/106801155(如有侵权请联系删除)

今天的文章遍历对象的几种方法是什么_js遍历list对象集合分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/45290.html

(0)
编程小号编程小号
上一篇 2023-09-06 23:17
下一篇 2023-09-06

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注