透過點表示法字串存取物件子屬性
處理巢狀物件時,存取深埋的屬性可能很麻煩。使用字串點表示法確定實現此目的的理想方法讓許多開發人員感到困惑。
考慮一個定義如下的物件:
var r = { a: 1, b: { b1: 11, b2: 99 } };
要存取b2 的值,通常可以使用:
r.b.b2 r['b']['b2']
但是,定義像var s = "b .b2" 這樣的字串並嘗試存取r[s]否則r.s 將會失敗。
解決方案:
一種方法涉及建立一個自訂函數,該函數將字串按點分割並迭代檢索所需的屬性。一個簡單的範例是:
function getDescendantProp(obj, desc) { var arr = desc.split("."); while (arr.length && (obj = obj[arr.shift()])); return obj; } console.log(getDescendantProp(r, "b.b2")); // Outputs 99
此函數根據點分隔的路徑遞歸地降低物件層次結構,傳回最終值。值得注意的是,它也可以使用點表示法處理存取數組索引:
console.log(getDescendantProp({ a: [1, 2, 3] }, 'a.2')); // Outputs 3
以上是如何在 JavaScript 中使用點表示法字串存取嵌套物件屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!