通过点表示法字符串访问对象子属性
处理嵌套对象时,访问深埋的属性可能很麻烦。使用字符串点表示法确定实现此目的的理想方法让许多开发人员感到困惑。
考虑一个定义如下的对象:
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中文网其他相关文章!