在項目中對對象的遍歷在所難免踢京,現(xiàn)總結(jié)以下幾種遍歷對象的方法。
假設(shè)我們有一個對象宦棺,var obj={name:'liming',age:29}
瓣距,需要對它進(jìn)行遍歷操作。
- for in 循環(huán)
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 循環(huán)
對于普通的對象代咸,for of循環(huán)不能直接使用蹈丸,會報錯,必須部署了 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循環(huán)遍歷對象自身的和繼承的可枚舉屬性逻杖,所以我們使用for in循環(huán)時要使用
hasOwnProperty
方法對屬性進(jìn)行判斷,只遍歷對象自身屬性思瘟。所以推薦第二種for in循環(huán)荸百。 - Object.keys()返回一個數(shù)組,包括對象自身的所有可枚舉屬性的鍵名滨攻。
- Object.values()返回一個數(shù)組够话,包括對象自身的所有可枚舉屬性的鍵值。
- Object.entries()返回一個數(shù)組光绕,包括對象自身的所有可枚舉屬性的鍵值對數(shù)組女嘲。