在 JavaScript 中,有多种方法可以访问对象属性。但是,使用字符串路径访问嵌套属性可能是一个挑战。
给定一个如下对象:
var r = { a:1, b: { b1:11, b2: 99}};
考虑一个场景,您希望通过指定路径字符串来访问值 99 var s =“b.b2”。虽然 r.b.b2 或 r['b']['b2'] 等传统方法有效,但您可能更喜欢使用更简洁的表示法。
function getDescendantProp(obj, desc) { var arr = desc.split("."); while(arr.length && (obj = obj[arr.shift()])); return obj; }
此函数迭代地将字符串分割为点并导航对象结构,最终返回请求的属性。
console.log(getDescendantProp(r, "b.b2")); //-> 99
提供的函数仅支持访问嵌套对象属性。对于更高级的用法,您也可以修改它来处理数组索引:
function advancedGetDescendantProp(obj, desc) { var arr = desc.split("."); while(arr.length) { let key = arr.shift(); if (isNaN(key)) { obj = obj[key]; } else { obj = obj[parseInt(key)]; } if (!obj) return undefined; } return obj; }
以上是如何使用点表示法字符串有效访问嵌套 JavaScript 对象属性?的详细内容。更多信息请关注PHP中文网其他相关文章!