Javascript推送数组中的对象

时间:2014-03-01 19:46:50

标签: javascript arrays object

我完全不熟悉对象,

我需要推送对象来获得这个结构:

var data = [
            {x: 0, y: 91},
            {x: 1, y: 90},
            {x: 2, y: 89.7},
            {x: 3, y: 89.5},
            {x: 4, y: 89.2},
            {x: 5, y: 88.2},
            {x: 6, y: 88.4},
            {x: 7, y: 87.9},
            {x: 8, y: 87.2},
            {x: 9, y: 87.0},
            {x: 10, y: 87.2},

        ];

尝试这种方式

for (var i=0; i<result.rows.length; i++) {

var row = result.rows.item(i);

data.push({x: i, y: row.weight});console.log(data[i]);

}

这里是jsfiddle示例,而不是SQLite数据库的整个代码,只是我无法管理的部分,我想要做的是动态地提供图表,但看起来我无法推动'data'数组以正确的方式排列(如果存在问题,因为推送代码看起来不错)。

http://jsfiddle.net/zeroshadow/WDEUz/3/

这是我在推送数据时从控制台获得的内容:

Object {x: 1, y: 65} 
Object {x: 2, y: 64.9}
Object {x: 3, y: 64.8}
Object {x: 4, y: 64.2}
Object {x: 5, y: 64.3}
Object {x: 6, y: 64.5}
Object {x: 7, y: 64.3} 
Object {x: 8, y: 64} 
Object {x: 9, y: 63.8}
Object {x: 10, y: 63.1}

看起来不错但是图表不喜欢它并且一切都消失了。由于我不了解对象,我认为推送后的数组有问题,因为处于初始状态的数据数组有效。

2 个答案:

答案 0 :(得分:1)

你在for循环中使用了console.log(data[i]);,可能你已经看到了对象如何被推入数组中。确保在for循环之外console.log(data)(仅用于调试)。您的data.push({x: i, y: row.weight})是正确的。也许row.weight它不是你的想法。还要确保result.rows.length为10。 如果你需要更好的支持,你应该给我们一个小提琴或更多的信息。

答案 1 :(得分:0)

很抱歉,经常发生的事情我忽略了图表中的数据范围设置。我的错误是我的误解。再次抱歉。 代码有效。

在Jsfiddle示例中,您可以看到:

y = pv.Scale.linear(82,92).range(0,h);

我只是将数据推出65到60之间的范围。我调整了范围:

y = pv.Scale.linear(59,66).range(0,h);

并且一切都像预期的那样。

谢谢大家,对不起浪费时间。