JS——遍历对象方法总结

JS——遍历对象方法总结遍历对象方法一 对象遍历方法 1 for in 2 Object keys Object values Object entries 3 Object getOwnProper 4 Object getOwnProper 5 Reflect ownKeys 一 对象遍历方法 1 for infor in 主要用于循环对象属性 循环中的代码每执行一次 就会对对象的属性进行一次操作 语法如下 for

一、对象遍历方法


1.for…in

for...in主要用于循环对象属性。循环中的代码每执行一次,就会对对象的属性进行一次操作。语法如下:

for (let i in obj){ 
     执行的代码块 } 

其中两个参数:

  • i:必须。指定的变量可以是数组元素,也可以是对象的属性
  • obj:必须。指定的迭代的对象
let obj={ 
    a:1,b:2,c:3} for (let i in obj){ 
     console.log('键名:',i) console.log('键值:',obj[i]) } 

⚠️:

  • for...in 方法不仅会遍历当前对象的可枚举属性,还会遍历其原型链上的属性

2.Object.keys()Object.values()Object.entries()

这三个方法都用来遍历对象,它会返回一个由给定对象的自身可枚举属性(不含继承的和Symbol属性)组成的数组,数组元素的排列顺序和正常循环遍历该对象时返回的顺序一致,三个元素返回的值分别如下:

  • Object.keys():返回包含对象键名的数组
  • Object.values():返回包含对象键值的数组
  • Object.entries():返回包含对象键名和键值的数组
let obj={ 
      id:1, name:'hello', age:18 } console.log(Object.keys(obj)) //['id','name','age'] console.log(Object.values()) //[1,'hello',18] console.log(Object.entries()) //[['id',1],['name','hello'],['age',18]] 

⚠️:

  • Object.keys()方法返回的数组中的值都是字符串,也就是说不是字符串的key值会转化为字符串
  • 结果数组中的属性值都是对象本身可枚举的属性,不包括继承来的属性

3.Object.getOwnPropertyNames()

Object.getOwnPropertyNames()方法与Object.keys()类似,也是接受一个对象作为参数,返回一个数组,包含了该对象自身的所有属性名。但它不能返回不可枚举的属性。

let a=['hello','word'] Object.keys(a) //['0','1'] Object.getOwnPropertyNames(a) //['0','1','length'] 

这两个方法都可以计算对象中属性的个数:

let a={ 
      0:'a',1:'b',2:'c'} Object.getOwnPropertyNames(a) //['0','1','2'] Object.keys(a).length //3 Object.getOwnPropertyNames(a).length //3 

4.Object.getOwnPropertySymbols()

Object.getOwnPropertySymbols()方法返回对象自身的Symbol属性组成的数组,不包括字符串属性:

let obj={ 
       a:1} //给对象添加一个不可枚举的Symbol属性 Object.getOwnPropertySymbols(obj,{ 
        [Symbol('zhu')]:{ 
        value: 'Symbol zhu', enumerable: false } }) //给对象添加一个可枚举的Symbol属性 obj[Symbol('yu')]='Symbol yu' Object.getOwnPropertySymbols(obj).forEach(key=>{ 
        console.log(obj[key]) //Symbol zhu Symbol yu }) 

5.Reflect.ownKeys()

Reflect.ownKeys()返回一个数组,包含对象自身的属性。它和Object.keys()类似,Object.keys()返回属性key,但是不包括不可枚举的属性,而Reflect.ownKeys()会返回所有属性key:

let obj={ 
         a:1, b:2 } Object.defineProperty(obj,'method',{ 
         value:function(){ 
         alert('non enumerable property') }, enumerable:false }) console.log(Object.keys(obj)) //['a','b'] console.log(Reflect.ownKeys(obj)) //['a','b','method'] 

⚠️:

  • Object.keys():相当于返回对象属性数组
  • Reflect.ownKeys():相当于Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj))

总结如下:

对象方法 遍历基本属性 遍历原型链 遍历不可枚举属性 遍历Symbol
for…in
Object.keys()
Object.getOwnPropertyNames()
Object.getOwnPropertySymbols()
Reflect.ownKeys()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178847.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午4:23
下一篇 2026年3月26日 下午4:24


相关推荐

发表回复

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

关注全栈程序员社区公众号