如何创建嵌套数组?

时间:2013-06-11 14:44:50

标签: javascript arrays format nested concat

我一直在寻找堆栈溢出来帮助我实现AreaChart。问题是我有类似的东西。

var items = new Array();
if ($(result).find('dato').length > 0 ) {
  items = ["Date", "Kg Emitted", "Kg Reduced"];
  $(result).find('dato').each(
    function (i) {
      var item = new Array();
      var date = $(this).find("fecha").first().text();
      var kge = parseInt($(this).find("emitido").first().text());
      var kgr = parseInt($(this).find("reducido").first().text());
      item = [date,kge,kgr];
      items.push.apply(items, item)
    }
  );
};

问题是我需要它的格式如下:

items = ["Date","Kg Emitted", "Kg reduced"], [2013-01-01, 3, 4], [2013-01-02, 1, 3], etc

我很感激有关如何格式化这个嵌套数组的任何帮助,因为到目前为止我已经尝试items.push.apply(items, item),但它似乎不起作用。

3 个答案:

答案 0 :(得分:1)

只需将items.push.apply(items, item)更改为items.push(item)

当您使用“申请”时,您实际上正在执行与Array.prototype.concat相同的操作。

答案 1 :(得分:1)

items的初始化并未将其设置为嵌套数组。元素0是“日期”,1是“Kg Emitted”,2是“Kg Reduced”。

你想用

开头
items = [["Date", "Kg Emitted", "Kg Reduced"]];

这将使数组的元素0为[“Date”,“Kg Emitted”,“Kg Reduced”],这就是你想要的。

然后,正如其他人已经说过的那样,将items.push.apply(items, item)更改为

items.push(item);

答案 2 :(得分:1)

每个人都给了你正确答案, 我想添加一点修复,数组中的第一个值是不正确的,实际上是3行。

查看差异in this fiddle

您需要添加另一个[..]