【问题标题】:Not able to get JSON value dynamically [duplicate]无法动态获取 JSON 值 [重复]
【发布时间】:2019-03-03 22:26:26
【问题描述】:

我正在研究以下 sn-p。为什么我无法获得

let node = 'Em2';
console.log(data.node.c2);

工作?如您所见,我能够在传递data.Em2.c1 时获取数据,但是像let node = 'Em2'; console.log(data.node.c2); 这样的动态格式我收到此错误

TypeError: 无法读取未定义的属性“c2”

代码:

var data ={
   "Em1": { "c1":"#FFF", "c2":"#EEE" },
   "Em2": { "c1":"#DDD", "c2":"#ooo" }
}


let node = 'Em2';

console.log(data.Em2.c1);
console.log(data.node.c2);

var data ={
   "Em1": { "c1":"#FFF", "c2":"#EEE" },
   "Em2": { "c1":"#DDD", "c2":"#ooo" }
}


let node = 'Em2';

console.log(data.Em2.c1);
console.log(data.node.c2);

【问题讨论】:

    标签: javascript


    【解决方案1】:

    使用方括号[]access object member via variable

    var data ={
       "Em1": { "c1":"#FFF", "c2":"#EEE" },
       "Em2": { "c1":"#DDD", "c2":"#ooo" }
    }
    
    
    let node = 'Em2';
    
    console.log(data.Em2.c1);
    console.log(data[node].c2);

    类似问题:how to access object property using variable

    【讨论】:

    • 谢谢亚历克斯,但为什么要[] ?!
    • @Mona 如果你不使用方括号,js 会尝试在你的对象中使用命名属性 node,而不是变量 node 中命名的属性
    【解决方案2】:

    试试console.log(data[node][c2]),而不是console.log(data.node.c2)

    【讨论】:

      猜你喜欢
      • 2013-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      相关资源
      最近更新 更多