js中遍历对象

67 阅读1分钟
const dateEnum = {
    monday:1,
    tuesday:2,
    wednesday:3,
    thursday:4,
    friday:5,
    saturday:6,
    sunday:7
}

/*** 方法一:for-in 语句是一种严格的迭代语句,用于枚举对象中的非符号键属性。***/
for(const key in dateEnum){
    console.log(key)
}

注意:
for...in 循环在JavaScript中用于遍历对象自身的非Symbol属性,包括其继承的可枚举属性。默认情况下,JavaScript对象的原型(__proto__)链上的属性是不可枚举的,所以for...in不会遍历到原型链上的属性。
但是,如果你有修改Object.prototype或任何对象的原型,添加了可枚举属性,那么for...in将会遍历到这些属性,如下:

// 如果我们在Object.prototype上添加了属性,那么for...in可能会遍历到这些属性
Object.prototype.c = 3; // 不推荐这样做
 
for (let key in dateEnum) {
  console.log(key); 
  // 现在输出 "monday" ,"tuesday","wednesday","thursday","friday","saturday","sunday", "c"
}




/*** 方法二:for-of 语句是一种严格的迭代语句,用于遍历可迭代对象的元素。***/
for(const [key, value] of Object.entries(dateEnum)){
    console.log(key,value)
}
for(const key of Object.keys(dateEnum)){
    console.log(key)
}
for(const value of Object.values(dateEnum)){
    console.log(value)
}