首页 >web前端 >js教程 >如何使用点表示法字符串有效访问嵌套 JavaScript 对象属性?

如何使用点表示法字符串有效访问嵌套 JavaScript 对象属性?

Susan Sarandon
Susan Sarandon原创
2024-11-30 10:02:11642浏览

How to Efficiently Access Nested JavaScript Object Properties Using Dot Notation Strings?

使用点表示法字符串访问对象子属性

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn