在javascript问题中动态创建对象

时间:2015-05-24 14:09:30

标签: javascript jquery

您好试图动态创建此数组。这是静态方式:

var pieData = [
                {
                    value: 300,
                    color:getRandomColor(),
                    highlight: getRandomColor(),
                },
                {
                    value: 50,
                    color: getRandomColor(),
                    highlight: "#fac878",
                },
                {
                    value: 100,
                    color: getRandomColor(),
                    highlight: getRandomColor(),
                },
                {
                    value: 120,
                    color: getRandomColor(),
                    highlight: getRandomColor(),
                }

            ];

这就是我所取得的成就:

$.ajax({
        method: "POST",
        url: "getPieChartData"
    })
    .done(function(data){
        obj  = $.parseJSON(data);
        var pieData = []; i = 0;
        $.each(obj, function(key, item) {
            pieData[i].value = item.total + " - " + item.d_name;
            pieData[i].color = getRandomColor();
            pieData[i].highlight = getRandomColor();
            i++;
        });
    });

我从我的功能中获得的价值不是问题。我的问题是我在控制台中得到了这一部分:

pieData[i].value = item.total +" - " + item.d_name; TypeError: pieData[i] is undefined

我做错了什么? THX

3 个答案:

答案 0 :(得分:3)

您可以简单地使用.push()方法。不要使用索引器。

  

push()方法将一个或多个元素添加到数组的末尾,并返回数组的新长度。

$.each(obj, function(key, item) {
    pieData.push({
        value: item.total + " - " + item.d_name,
        color : getRandomColor(),
        highlight : getRandomColor()
    });
});

答案 1 :(得分:2)

您需要先创建pieData [i]对象;

switched off

答案 2 :(得分:1)

pieData[i].value ..之前,您应首先有一行:

pieData[i] = {};