透過字串路徑存取嵌套的JavaScript 物件和陣列
在JavaScript 中存取深度嵌套的物件和陣列可能是一體項繁瑣的任務。為了簡化這個過程,出現了利用字串路徑直接檢索特定值的解決方案。
純 JavaScript 解決方案
名為「Object.byString( )" 允許使用遵循點分隔路徑的字串擷取巢狀值。此解決方案的功能如下:
Object.byString = function(o, s) { s = s.replace(/\[(\w+)\]/g, '.'); // convert indexes to properties s = s.replace(/^\./, ''); // strip a leading dot var a = s.split('.'); for (var i = 0, n = a.length; i < n; ++i) { var k = a[i]; if (k in o) { o = o[k]; } else { return; } } return o; }
用法:
Object.byString(someObj, 'part3[0].name');
jQuery 解決方案
jQuery 提供了更簡單的語法來存取巢狀值:
$('someObj').data('part3[0].name');
範例用法
考慮以下物件:
var someObject = { 'part1' : { 'name': 'Part 1', 'size': '20', 'qty' : '50' }, 'part2' : { 'name': 'Part 2', 'size': '15', 'qty' : '60' }, 'part3' : [ { 'name': 'Part 3A', 'size': '10', 'qty' : '20' }, { 'name': 'Part 3B', 'size': '5', 'qty' : '20' }, { 'name': 'Part 3C', 'size': '7.5', 'qty' : '20' } ] };
使用提供的字串路徑,我們可以存取特定值,如下所示:
var part1name = Object.byString(someObject, 'part1.name'); var part2quantity = Object.byString(someObject, 'part2.qty'); var part3name1 = Object.byString(someObject, 'part3[0].name');
這些變數將現在保存嵌套物件中的對應值。
以上是如何使用字串路徑輕鬆存取嵌套的 JavaScript 物件和陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!