将特定格式的值推送到数组

时间:2013-07-01 06:43:23

标签: javascript jquery arrays rickshaw

我想动态创建一个数组,其格式应为

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++;        
});

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

format是一个对象数组。在以下代码中,您尝试将数组 [{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)
    });

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