將點表示法中的JavaScript 字串轉換為物件參考
在JavaScript 中,使用點表示法導覽物件屬性為一件事種常見且方便的做法。但是,在某些情況下,您可能有一個表示點分隔層次結構的字串,需要將其轉換為物件參考以便於存取。
問題陳述:
給定一個物件和一個點表示法的字串,如何將字串轉換為物件引用以存取對應的物件屬性?
範例:
考慮以下物件:
var obj = { a: { b: '1', c: '2' } }
和一個字串:
"a.b"如何你能轉換“a.b”來擷取與關聯的值嗎obj.a.b?
解:
有幾種方法可以實現此目的:1 .使用eval() 函數(不建議):
eval("var val = obj." + string);此解決方案直接將字串作為代碼求值並將結果指派給 val。然而,出於安全考慮,通常不鼓勵使用 eval()。
2.使用 [] 運算子(間接方法):
var val = obj[string];此方法使用方括號語法間接存取屬性。當字串是有效的 JavaScript 標識符(例如,沒有空格或特殊字元)時,它會起作用。
3.使用reduce()方法:
var val = string.split('.').reduce(function(obj, i) { return obj[i]; }, obj);此解決方案透過句點(.)字元分割字串,並使用reduce()方法從根物件開始遍歷物件層次結構。
4。使用 multiIndex() 函數:
var val = multiIndex(obj, string.split('.')); function multiIndex(obj, is) { return is.length ? multiIndex(obj[is[0]],is.slice(1)) : obj }此解決方案遞歸遍歷物件層次結構,直到找到所需的屬性。它處理多層點表示法和數組(如果需要)。
處理數組(可選):
如果字串包含數組索引,您可以使用以下方法:var val = string.match(/[^\]\[.]+/g).reduce(function(obj, i) { return obj[i]; }, obj);
附加註意:
以上是如何將點表示法的 JavaScript 字串轉換為物件參考?的詳細內容。更多資訊請關注PHP中文網其他相關文章!