JavaScript:使用变量访问对象多级属性

标签 javascript

<分区>

如果我使用变量作为键,如何访问多级属性?

这是行不通的:

var obj = {
    first: {thirst: "yo"},
    second: {beckon: "dud"}
}
var key = "first.thirst";
var result = obj[key];

最佳答案

当您在 JavaScript 中使用字符串作为属性名称时,没有任何字符是禁止使用的:包括句点。所以你可以很容易地拥有一个像这样的对象属性:

var o = {
    'first.second.third': 'value';
}

鉴于此,显然无法实现您的解决方案。

但是,只要您不在属性命名中使用句点,就可以创建一个函数来执行此操作:

function resolve(obj, path){
    path = path.split('.');
    var current = obj;
    while(path.length) {
        if(typeof current !== 'object') return undefined;
        current = current[path.shift()];
    }
    return current;
}

然后你可以调用:

var key = "first.thirst";
var result = resolve(obj, key);

关于JavaScript:使用变量访问对象多级属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24221803/

相关文章:

来自 AJAX 调用的 javascript 函数响应返回未定义

javascript - 从 Google Chart 中的 DataView 类获取值到 JavaScript 数组

javascript - 当用户在文本区域唯一数据中输入时更改处理程序值

javascript - 通过gapi.signin2.render按钮的Google OAuth未在React应用程序中触发回调

javascript - 结合两个 html 选择与 jquery

javascript - 数组中子元素的 AngularJS 过滤器列表

javascript - 从字符串中删除空格、连字符和括号

javascript - Angular 动态绑定(bind)指令范围

javascript - Bootstrap 内联表单布局

javascript - 对象的默认函数?