自訂物件無法使用 for...of
迴圈進行迭代。此外,您不能使用 map()
和 forEach()
等迭代器方法。如果您這樣做,您將在每個實例中收到 TypeError
。
相反,請使用 for...in
來迭代物件。此方法迭代物件的所有可枚舉、非符號屬性。
在下面的範例中,我們使用它來迭代obj
的所有三個屬性,並且對於每個屬性,我們記錄一個由屬性名稱(即其鍵)及其對應值組成的字串。
var obj = {a: 1, b: 2, c: 3}; for (const prop in obj) { console.log(`obj.${prop} = ${obj[prop]}`); } // Output: // "obj.a = 1" // "obj.b = 2" // "obj.c = 3"
我們使用變數 prop
初始化循環,該變數將在物件屬性的每次迭代中保存不同的屬性名稱(也稱為鍵)。區塊中指定的程式碼將在每次迭代時運行。
這裡有一個小示範來示範這一點(點擊結果查看輸出):
在循環內,每次迭代時,我們都會將物件的屬性名稱和值之一記錄到控制台。
迭代物件屬性的另一種方法是將物件傳遞到 Object.entries()
中並呼叫該方法。這將傳回多維數組(數組的數組)內該物件的所有可枚舉屬性:
const obj = {a: 1, b: 2, c: 3}; let result = Object.entries(obj) console.log(result) // [["a", 1], ["b", 2], ["c", 3]]
然後我們可以使用任何陣列迭代器方法循環它:
#Object.entries(obj).forEach(entry => { // do something }) Object.entries(obj).map(entry => { // do something }) Object.entries(obj).every(entry => { // do something })
您也可以使用 for...of
迴圈:
for (const entry of Object.entries(obj)) { // do something } for (const [key, value] of Object.entries(obj)) { // do something }
以下是一些示範:
在這裡,因為我們在每次迭代中得到一個由鍵和值組成的數組,所以我們只需分別使用entry[0]
和entry[1]
來訪問它們。如果您只需要鍵而不是鍵和值,請使用 Object.keys()
來取代 Object.entries()
。
for...of
基本上相同:
這些是我們可以在 JavaScript 中輕鬆迭代物件的屬性和鍵的方法。查看我們的 JavaScript 帖子以獲取更多文章和教程。
以上是使用JavaScript迭代物件鍵的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!