开发者问题收集

JSON- unturew typeError:无法读取未定义的属性(读取'0')

2022-04-26
1941

当我尝试返回 JSON.Name 时,出现此错误“未捕获 TypeError:无法读取未定义的属性(读取‘0’)”。

这是我的 javascript(console.log 用于测试):

var roomsCodes = [
    ['232','DDSB'],
    ['232','DDMB'],
    ['232','SJJB'],
    ['232','SJJS'],
];

var jsonMin = 
{
    "DDSB": {
        "Name": "Doble Estándar",
    },
    "DDMB": {
        "Name": "Doble con vista mar",
    },    
    "SJJB": {
        "Name": "Jr. Suite",
    },
    "SJJS": {
        "Name": "Jr. Suite Superior",
    },
}

for(var p = 0; p < roomsCodes.length; p++){
    if(232 == roomsCodes[p][0]){
        console.log(jsonMin.roomsCodes[p][1].Name);
    }
}
2个回答

您可以使用 [] 访问对象来修复它,如下所示:

var roomsCodes = [
  ["232", "DDSB"],
  ["232", "DDMB"],
  ["232", "SJJB"],
  ["232", "SJJS"]
];

var jsonMin = {
  DDSB: {
    Name: "Doble Estándar"
  },
  DDMB: {
    Name: "Doble con vista mar"
  },
  SJJB: {
    Name: "Jr. Suite"
  },
  SJJS: {
    Name: "Jr. Suite Superior"
  }
};

for (var p = 0; p < roomsCodes.length; ++p) {
  if (232 == roomsCodes[p][0]) {
    console.log(jsonMin[roomsCodes[p][1]].Name);
  }
}

当您想要使用动态变量访问属性时,您需要使用方括号,否则您可以使用点。

mgm793
2022-04-26
var roomsCodes = [
    ['232','DDSB'],
    ['232','DDMB'],
    ['232','SJJB'],
    ['232','SJJS'],
];

var jsonMin = 
{
    "DDSB": {
        Name: "Doble Estándar",
    },
    "DDMB": {
        Name: "Doble con vista mar",
    },    
    "SJJB": {
        Name: "Jr. Suite",
    },
   "SJJS": {
        Name: "Jr. Suite Superior",
    },
}

for(var p = 0; p < roomsCodes.length; p++){
    if(232 == roomsCodes[p][0]){
      
      const item = roomsCodes[p][1]
      
     
      
      console.log(jsonMin[item].Name)
      
    }
}
ACCode
2022-04-26