object遍历

42 阅读1分钟

object遍历

1.for...in 主要用于遍历对象,不建议用来遍历数组

遍历对象(可枚举的属性)

枚举:对象里面的属性是可以遍历的

for(let key in obj){key是键名,obj是对象
    执行代码块
}

for in 当然也可以用来遍历数组(只是不建议),此时的 key 是数组的索引

let arr = ["1","a",3,"J","哈哈哈"];
for(let key in arr){
    //注意:遍历数组的键名(key)返回的是字符串,不适合 ++ 操作
    console.log(key);//0,1,2,3,4   数组的键名是下标
    console.log(arr[key]);
}

Object.defineProperty

直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。

obj:要定义属性的对象。

prop:要定义或修改的属性的名称或 Symbol 。

descriptor:要定义或修改的属性描述符。

普通对象

let obj ={
    name:"aaa",
    id:2
};
Object.defineProperty(obj,"id",{
    enumerable:false  //设置id不可枚举
});
for(let key in obj){
    console.log(obj[key]);//2没有打印
};

2.for...of循环(ES6)

支持遍历数组、类对象(DOM NodeList)、字符串

不支持遍历普通对象

let arr2 = ["1","1","3"];
let obj2 = {
    id:11,
    name:"ss"
}
for(let val of arr2){//val: 值
    console.log(val);//1  1  3
}

遍历普通对象时

for(let val of obj2){
    console.log(val);//obj2 is not iterable
}

Object.keys() 返回一个表示给定对象的所有可枚举属性的字符串数组。

for(let val of Object.keys(obj2)){
    console.log(val);//id   name
};