javascript - JS - 通过键访问对象值但出现消息 [TypeError: Cannot read property 'XXX' of undefined]
问题描述
我有以下数据
indexMap = {"A": 0, "B": 1};
self.ctx.chart.data.datasets = [
{
"label" : "A",
"data" : [0,0,0,0,0]
},
{
"label" : "B",
"data" : [0,0,0,0,0]
},
]
当我想访问数据集数组的第一个对象的数据数组时,
我编写了以下代码:
var idx = indexMap["A"];
var data = self.ctx.chart.data.datasets[idx].data; // <--- error occur [TypeError: Cannot read property 'data' of undefined]
但是发生了错误,说:
TypeError:无法读取未定义的属性“数据”
但是 self.ctx.chart.data.datasets[idx] 可以打印如下值:
{
"label" : "A",
"data" : [0,0,0,0,0]
}
变量 self.ctx.chart.data.datasets[idx] 确实有键“数据”
我如何解决它?
BTW,当我使用下面的代码时没有问题,为什么?
var idx = 0;
var data = self.ctx.chart.data.datasets[idx].data; // <--- this is ok!!! why!!!!
解决方案
如果提供的数据正确,则工作正常
let indexMap = {"A": 0, "B": 1};
this.ctx = [
{
"label" : "A",
"data" : [0,0,0,0,0]
},
{
"label" : "B",
"data" : [0,0,0,0,0]
},
];
let id = indexMap["A"];
console.log((id))
this.result = this.ctx[id].data;
推荐阅读
- wpf - 当 DependencyProperty 更改时更新另一个属性的值
- sql - SSIS - 文本限定符用途
- google-chrome-os - 将 Web 应用程序移植到 Chrome 操作系统(支持多显示器)
- grafana - 如何让 Sensu Go 检查显示为 Grafana 的状态面板?
- c# - 比较和匹配嵌套的 JSON 值
- c++ - 在不知道哪个值处于活动状态的情况下在 std::visit 中获取活动值
- python - Python正则表达式匹配包括关键字在内的完整句子,而不会中断不结束句子的句点(.com,US等)
- c# - 比较两个具有相同节点和属性的 XML 字符串,并用新字符串更新旧字符串的值
- excel - MS Access VBA EXCEL.EXE 在 .quit 之后没有终止并且 = 没有
- r - 在其他数据框中重新计算值以进行计算