解决了未捕获的TypeError问题:无法读取未定义的属性“0”

时间:2015-09-07 23:42:36

标签: javascript arrays

我在本地存储中有一个数组

[["Beverages","55","114.63"],["Catering","2","32"],["Bowl","107","785.43"],["Frozen Yogurt","3","14.97"],["Premium Toppings","328","496.08"],["Salad","62","493.98"],["Soup","25","96.35"],["Wrap","54","389.36"],["Retail","10","18.57"],["Juices","16","95.84"],["Smoothies","12","71.88"]]

这段代码可以访问它并为高级图表创建一个新数组

getDeptDetailPie: function() {
    var data = new Array();
    var tempData = new Array();
    var currentData;
    currentData = JSON.parse(storage.readValue('currentDeptDetails'));

    for(var i = 0;i<=currentData.length;i++) {
        console.log(currentData[i][0]);
        if(currentData[i]) {
        tempData['name']=currentData[i][0];
        tempData['y']=currentData[i][2];
        data.push(tempData);
        tempData=[];
    }
    }

我在第9行获取了未被捕获的类型错误,这是console.log函数。但是控制台正在记录正确的数据,但没有一个被放入我的tempData数组中。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

关闭一个错误

i<=currentData.length

需要

i<currentData.length

tempData应该是一个对象,而不是一个数组。

for(var i = 0;i<currentData.length;i++) {
    var tempData = {}; 
    tempData['name']=currentData[i][0];
    tempData['y']=currentData[i][2];
    data.push(tempData);
}

或只是

for(var i = 0;i<currentData.length;i++) {
    data.push({ name : currentData[i][0], y : currentData[i][2]});
}

或者你可以使用forEach或map并摆脱for循环

var data = currentData.map(function(val){ return { name : val[0], y : val[2]}});