首页 > 解决方案 > 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!!!!

标签: javascriptangular

解决方案


如果提供的数据正确,则工作正常

 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; 

检查这个


推荐阅读