前言
整理关于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
转载请注明原作者
不喜勿喷,欢迎补充~~