在项目中对对象的遍历在所难免,现总结以下几种遍历对象的方法。
假设我们有一个对象,var obj={name:'liming',age:29}
,需要对它进行遍历操作。
- for in 循环
for(var key in obj){
console.log(obj[key]); // liming 29
}
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(obj[key]); // liming 29
}
}
for of 循环
对于普通的对象,for of循环不能直接使用,会报错,必须部署了 Iterator 接口后才能使用。es6的Object.keys()
for (var key of Object.keys(obj)) {
console.log(key); // name age
}
- es6的Object.values()
for (var key of Object.values(obj)) {
console.log(key); // liming 29
}
- es6的Object.entries()
for (var [key, value] of Object.entries(obj)) {
console.log([key, value]); // [['name','liming'],['age','29']]
}
说明:
- for in循环遍历对象自身的和继承的可枚举属性,所以我们使用for in循环时要使用
hasOwnProperty
方法对属性进行判断,只遍历对象自身属性。所以推荐第二种for in循环。 - Object.keys()返回一个数组,包括对象自身的所有可枚举属性的键名。
- Object.values()返回一个数组,包括对象自身的所有可枚举属性的键值。
- Object.entries()返回一个数组,包括对象自身的所有可枚举属性的键值对数组。