当属性名称在JavaScript中为变量时获取对象的属性

时间:2019-12-04 00:01:15

标签: javascript

给出一个对象,像这样说:

const data = { 
   "menu":{ 
      "id":"file",
      "value":"File",
      "popup":{ 
         "menuitem":[ 
            { 
               "value":"New",
               "onclick":"CreateNewDoc()"
            },
            { 
               "value":"Open",
               "onclick":"OpenDoc()"
            }
         ]
      }
   }
}

我想获得对象的嵌套属性之一,例如popup,但这可以是任何类型的Web小部件的名称-这是一个变量。看来这两种方法中的任何一种都可以,但是它们都返回错误:

    let propName = "popup";

    console.log(data.menu.propName.menuitem);

    console.log(data.menu. + propName + .menuitem);

当属性名称之一是变量时,如何获取对象的属性?

3 个答案:

答案 0 :(得分:1)

使用方括号。

let propName = "popup";

console.log(data.menu[propName].menuitem);

在尝试访问它之前,请记住检查它,否则可能会引发错误

let propName = "popup";

if(data.menu[propName]){
    console.log(data.menu[propName].menuitem);
}

答案 1 :(得分:-1)

let propName = "popup";
const {menu: {[propName]: menuItem}} = data;

当然,当您不更改变量值时,const关键字总是首选。

答案 2 :(得分:-1)

如果代码中可以包含多个值,还可以使用三元运算符来处理变量名称:

let propName = variableName1 ? variableName1 : variableName2;

console.log(data.menu[`${propName}`].menuitem);