给出一个对象,像这样说:
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);
当属性名称之一是变量时,如何获取对象的属性?
答案 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);