javaScript遍历对象的三种方法

88 阅读1分钟

前言

整理关于js遍历对象的三种方法,关于补充~

一.for...in

最基础的遍历对象的方式,但是它会遍历出对象原型链上的属性

const obj = {
    cardNumber:'352685577578458965',
    name:'小明',
    sex:'男'
}
obj.create({age:18})
for(let key in obj){
  console.log(obj[key]) // 352685577578458965,小明,男,18 --18是原型链上的属性也被输出了
}

可以使用 hasOwnProperty() 方法过滤掉原型链上的属性。

for(let key in obj){
  if(obj.hasOwnProperty(key)){
    console.log(obj[key]) // 352685577578458965,小明,男---18就被过滤了
  }
}

二.Object.keys(obj)和Object.values(obj)

返回值是一个数组,它会自动过滤掉对象原型链上的属性

const obj = {
    cardNumber:'352685577578458965',
    name:'小明',
    sex:'男'
}
console.log(Object.keys(obj)) //输出key值--['cardNumber','name','sex']
console.log(Object.values(obj)) //输出value值--['352685577578458965','小明','男']

三.使用Object.getOwnPropertyNames(obj)

返回值是一个数组,它会输出对象自身的所有属性(包括不可枚举的属性)

  const obj = {
        cardNumber:'352685577578458965',
      name:'小明',
      sex:'男'
  }
  obj.create({age:18})
  Object.getOwnPropertyNames(obj).forEach(function(key){
      console.log(key+ '---'+obj[key])
  })
  // 输出:
  // cardNumber---352685577578458965
  // name---小明
  // sex---男
  // age--18

转载请注明原作者

不喜勿喷,欢迎补充~~