JavaScript将数组“推送”到数组中

时间:2014-05-26 13:20:04

标签: javascript jquery arrays

这是我的相关代码:

var data_final = [];
      for(var i = 1; i<4; i++) {
        $.ajax({
          ...
          },
          crossDomain: true,
          success: function(raw_data) {

            // Put the data in the proper array
            for(var d in raw_data.data) {
              data_final[i-1].push([parseDate(d), raw_data.data[d]]);
            }
            data_final[i-1] = twoDimensionalSort(data_final[i-1]);
          }
        });

我在这一行收到错误:data_final[i-1].push([parseDate(d), raw_data.data[d]]); &#34; Uncaught TypeError:无法读取属性&#39; push&#39;未定义&#34;

.push方法不允许将数组推入数组吗?如果我在[i-1]中取出data_final规范,它可以正常工作,但我需要指定数据的推送位置。

5 个答案:

答案 0 :(得分:5)

你有一个数组

var data_final = [];

此数组现在为空,所以正在执行

data_final[i-1]

什么都不给你,它是undefined

data_final[i-1].push(something);

不起作用,因为您无法推送到undefined 你可能应该这样做

var arr = [];

for(var d in raw_data.data) {
    arr.push([parseDate(d), raw_data.data[d]]);
}

data_final.push(arr);

答案 1 :(得分:1)

试试:

var data_final = [];
for(var i = 1; i<4; i++) {
    if (data_final[i-1] == undefined) data_final[i-1] = [];
    ....

答案 2 :(得分:0)

var data_final = []

您正在定义一个数组。您通过索引来获取数组的值。

这可行的唯一方法是data_final是多维数组:

var data_final = [ [], [], [] ];
data_final[0].push([1,2,3]);

答案 3 :(得分:0)

实际上你可以将某些内容推送到data_final[]

       data_final.push("test");
       data_final.push(["pushing","an","array"]);

但实际上你无法将任何内容推送到data_final数组的未定义元素中:

       //this will raise an error!!
       data_final[5].push("test");

首先,您必须初始化每个未定义的元素:

       data_final[5] = [];
       data_final[5].push("Now the 5th element is a well defined array");

答案 4 :(得分:-1)

push只将数据附加到数组的末尾,如果你想将数据放在数组的特定位置,我建议你使用splice

查看此mdn文档

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice