JavaScript遍歷對(duì)象的五種常用方式總結(jié)
前言
大家好呀!今天我們來(lái)聊一聊如何在 JavaScript 中遍歷一個(gè)對(duì)象。對(duì)象在 JavaScript 中是一個(gè)非常常見的數(shù)據(jù)類型,經(jīng)常用來(lái)存儲(chǔ)各種各樣的信息。如何從中提取數(shù)據(jù),或者對(duì)每一個(gè)屬性進(jìn)行操作呢?下面我們一起來(lái)看看5種常用的遍歷對(duì)象的方式吧!
1. for...in 循環(huán)
for...in 是 JavaScript 最常用的一種遍歷對(duì)象屬性的方式。它會(huì)遍歷對(duì)象所有可枚舉的屬性,包括繼承的屬性。
例子:
const person = {
name: "Alice",
age: 25,
job: "Engineer"
};
for (let key in person) {
console.log(key, ": ", person[key]);
}
輸出:
name : Alice
age : 25
job : Engineer
這里需要注意的是,for...in 會(huì)遍歷對(duì)象的所有屬性(包括繼承來(lái)的屬性)。如果不希望遍歷繼承的屬性,我們可以加個(gè)判斷:
if (person.hasOwnProperty(key)) {
// 只遍歷 person 自己的屬性
}
2. Object.keys() + forEach() 組合
如果我們只對(duì)對(duì)象的“自有屬性”感興趣,可以使用 Object.keys() 來(lái)獲取所有的鍵(屬性名),然后配合 forEach() 來(lái)遍歷。
例子:
const person = {
name: "Alice",
age: 25,
job: "Engineer"
};
Object.keys(person).forEach(key => {
console.log(key, ": ", person[key]);
});
輸出:
name : Alice
age : 25
job : Engineer
Object.keys() 會(huì)返回對(duì)象的鍵名數(shù)組,而 forEach() 是數(shù)組的方法,所以可以用它來(lái)方便地遍歷每個(gè)鍵。
3. Object.values() + forEach() 組合
如果你只關(guān)心對(duì)象的值,可以用 Object.values()。這個(gè)方法會(huì)返回一個(gè)數(shù)組,數(shù)組里包含對(duì)象的所有值。
例子:
const person = {
name: "Alice",
age: 25,
job: "Engineer"
};
Object.values(person).forEach(value => {
console.log(value);
});
輸出:
Alice
25
Engineer
4. Object.entries() + forEach() 組合
Object.entries() 會(huì)返回一個(gè)包含對(duì)象鍵值對(duì)的二維數(shù)組。你可以通過(guò)這種方式既得到屬性名,又能得到屬性值,特別適合需要同時(shí)操作鍵和值的場(chǎng)景。
例子:
const person = {
name: "Alice",
age: 25,
job: "Engineer"
};
Object.entries(person).forEach(([key, value]) => {
console.log(key, ": ", value);
});
輸出:
name : Alice
age : 25
job : Engineer
這里 Object.entries(person) 會(huì)返回 [["name", "Alice"], ["age", 25], ["job", "Engineer"]],然后我們可以用解構(gòu)語(yǔ)法([key, value])來(lái)方便地訪問(wèn)鍵和值。
5. for...of + Object.entries() 組合
for...of 循環(huán)是對(duì)數(shù)組的遍歷非常友好的一種方法。如果你使用 Object.entries() 得到的是一個(gè)二維數(shù)組,我們可以用 for...of 來(lái)遍歷它。
例子:
const person = {
name: "Alice",
age: 25,
job: "Engineer"
};
for (const [key, value] of Object.entries(person)) {
console.log(key, ": ", value);
}
輸出:
name : Alice
age : 25
job : Engineer
for...of 循環(huán)會(huì)讓代碼更簡(jiǎn)潔,也能夠更直觀地處理鍵值對(duì)。
總結(jié)
for...in:遍歷對(duì)象的所有屬性,包括繼承的屬性,但可以通過(guò)hasOwnProperty排除繼承的屬性。Object.keys():獲取對(duì)象的鍵名數(shù)組,結(jié)合forEach()遍歷。Object.values():獲取對(duì)象的值數(shù)組,結(jié)合forEach()遍歷。Object.entries():獲取對(duì)象的鍵值對(duì)數(shù)組,結(jié)合forEach()或for...of遍歷。
每種方法都有其特定的使用場(chǎng)景哦!你可以根據(jù)具體的需求來(lái)選擇最適合的方式。希望這篇文章能幫助你更好地掌握 JavaScript 中的對(duì)象遍歷!??
到此這篇關(guān)于JavaScript遍歷對(duì)象的五種常用方式的文章就介紹到這了,更多相關(guān)JS遍歷對(duì)象五種方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺析Javascript的自動(dòng)分號(hào)插入(ASI)機(jī)制
我們大家都知道在寫java和c時(shí),必須要在語(yǔ)句后加分號(hào),否則編譯通不過(guò)。而js不同,存在自動(dòng)分好插入機(jī)制,下文簡(jiǎn)稱ASI。它會(huì)給源代碼的 token 流自動(dòng)插入分號(hào)。下面這篇文章我們就來(lái)談?wù)凧avascript的自動(dòng)分號(hào)插入(ASI)機(jī)制。2016-09-09
js實(shí)現(xiàn)表格的隔行變色和上下移動(dòng)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)表格的隔行變色和上下移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
前端實(shí)現(xiàn)無(wú)感刷新Token的方法與避坑指南
實(shí)現(xiàn)token無(wú)感刷新對(duì)于前端來(lái)說(shuō)是一項(xiàng)非常常用的技術(shù),今天,我們就來(lái)徹底搞懂如何真正實(shí)現(xiàn)無(wú)感刷新Token以及為什么?90%?的實(shí)現(xiàn)都有致命缺陷2026-03-03
javascript FormatNumber函數(shù)實(shí)現(xiàn)方法
如果有一個(gè)數(shù)字498.8573945,如何把它格式化成兩位小數(shù)據(jù)呢?用過(guò)asp的都知道,在vbscript里我們可以調(diào)用formatnumber,即用formatnumber(498.8573945,2)就可以輸出:498.86。2008-12-12
微信小程序如何修改radio和checkbox的默認(rèn)樣式和圖標(biāo)
這篇文章主要介紹了微信小程序修改radio和checkbox的默認(rèn)樣式和圖標(biāo),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07

