js 遍历对象的几种方式

第一种: for......in

复制代码
const obj = {
            id:1,
            name:'zhangsan',
            age:18
} for(let key in obj){ console.log(key + '---' + obj[key]) }
复制代码

输出结果:

 

使用for in会遍历对象的所有属性,还可以遍历到原型上的属性和方法

 

1
2
3
4
5
6
7
8
9
10
11
12
13
const obj = {
      id:1,
      name:'zhangsan',
      age:18
 }
 Object.prototype.sex = '男'
 Object.prototype.get = function() {
      console.log('这是原型上的方法');
 }
     
 for(let key in obj) {
      console.log(key + '---' + obj[key]);
 }

输出结果:

 

解决:可以在循环内部判断一下,使用hasOwnProperty()方法可以判断某属性是不 是该对象的实例属性。

1
2
3
4
5
6
for(let key in obj) {
      // console.log(key + '---' +obj[key]);
     if(obj.hasOwnProperty(key)) {
        console.log(key + '---' +obj[key]);
      }
 }

 输出结果:

 

 

第二种:

1)、Object.keys(obj)

2)、Object.values(obj)

参数:

obj:要返回其枚举自身属性的对象

返回值:

一个表示给定对象的所有可枚举属性的字符串数组。

复制代码

const obj = {
    id:1,
    name:'zhangsan',
    age:18
}

 console.log(Object.keys(obj))

console.log(Object.values(obj))

复制代码

输出结果: obj对象的key组成的数组

['id','name','age']

 

输出结果:obj对象的value组成的数组

['1','zhangsan','18']

 

 

第三种:使用Object.getOwnPropertyNames(obj)

返回一个数组,包含对象自身的所有属性(包含不可枚举属性)
遍历可以获取key和value
复制代码
const obj = {
            id:1,
            name:'zhangsan',
            age:18
    }
    Object.getOwnPropertyNames(obj).forEach(function(key){
        console.log(key+ '---'+obj[key])
    })
复制代码

输出结果:

posted @ 2022-05-06 14:07  清水紅葉  阅读(16988)  评论(0编辑  收藏  举报