这是我的相关代码:
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
规范,它可以正常工作,但我需要指定数据的推送位置。
答案 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