-1

我想动态创建一个数组,该数组的值应为

var dat1 = [
    { x: 0, y: 32.07  },
    { x: 1, y: 37.69  },
    { x: 2, y: 529.49 },
    { x: 3, y: 125.49 },
    { x: 4, y: 59.04  }
];

我想将整个数据动态存储到数组中。我从 json 数据中获取这些值。我希望数组采用这种格式。我怎样才能创建它?

我试过这个:

$.each(r_data, function(key, val) {
    data1.push([{
        x : i,
        y : parseFloat(val.something)
    }]);
    i++;        
});

...但没有得到我想要的结果。

4

2 回答 2

2

假设你有

var data1 = [];

...而且可能

var i = 0;

...在您的代码之前,您的代码将生成以下结构:

var data1 = [
    [ { x: 0, y: 32.07  } ],
    [ { x: 1, y: 37.69  } ],
    [ { x: 2, y: 529.49 } ],
    [ { x: 3, y: 125.49 } ],
    [ { x: 4, y: 59.04  } ]
];

请注意,您最终是如何得到一个数组,其中每个条目都是另一个数组,该数组又包含具有xy属性的对象。

我怀疑你想要:

var data1 = [];
var i = 0;
$.each(resultBar_data, function(key, value) {
    data1.push({
        x : i,
        y : parseFloat(value.averagePrice)
    });
    i++;        
});

...它只是将对象直接推送到 上data1,而不将它们包装在额外的数组中(注意我已经删除了[]正在推送的内容)。您将像这样访问这些条目:

console.log("The first entry is "  + data1[0].x + "," + data1[0].y);
console.log("The second entry is " + data1[1].x + "," + data1[1].y);
于 2013-07-01T06:53:14.543 回答
0

格式是一个对象数组。在以下代码中,您尝试将数组 [{x:i, y:parseFloat(value.averagePrice)}]推送到格式数组:

$.each(resultBar_data, function(key, value) {
    format.push([{ /*array start*/
        x : i,
        y : parseFloat(value.averagePrice)
    }] /*array end*/
    );
    i++;        
    });

记住方括号表示一个数组。

我认为要解决您的问题,应该是:

/*i just removed the square brackets so that push now pushes an object, 
not an array with a single object*/
format.push({ 
        x : i,
        y : parseFloat(value.averagePrice)
    });

希望这会有所帮助,请询问您是否需要更多信息或我是否误解了您的问题!

于 2013-07-01T07:00:07.537 回答