我在控制台中使用chrome记录它们,它们看起来像这样:
(A) []
(B) (3) [{…}, {…}, {…}]
在控制台中打开它们时,这些数组的内部是相同的。不同之处在于我在B的值中使用
进行硬编码arrayA.push({
...
});
在数组A的空(arrayA = [];)
上。因此,当尝试访问数组A中的元素时,arrayA[0]
返回undefined,与返回预期值的arrayB[0]
相比。
编辑:此处为JSFiddle
答案 0 :(得分:0)
您的小提示显示问题所在:异步代码。您正在进行ajax调用,并在调用返回后将数据推送到数组。您的console.log数组在ajax调用返回之前发生,因此此时数组仍为空。
如果您在回调中控制数据,那么您将看到实际数据。高度简化的例子:
var a = [];
$.getJSON('http://example.com', function(data) {
a.push(data);
console.log(a); // now a contains data
});
console.log(a); // a is still empty, because the getJSON hasn't returned yet