2017-08-10 5 views
-1

私はクロームでそれらをロギングコンソールよ、彼らはこのように表示されます。これら2つの配列の違いは何ですか?

(A) [] 

(B) (3) [{…}, {…}, {…}] 

コンソールでそれらを開いたときに、これらの配列の内部は同じです。違いは、アレイAの要素にアクセスしようとしたとき、私はこの結果Bの値にハードコーディングだと配列Aに空(arrayA = [];)

arrayA.push({ 
    ... 
}); 

を使用することであるarrayA[0]arrayB[0]に比べて、undefinedを返し意図した値を返します。

EDIT:非同期コード:ここJSFiddle

+0

https://stackoverflow.com/questions/16484838/console-logarray-shows-different-array-contents-than-iterating-the-array-and-d – epascarello

+0

アレイAが空であります。配列Bは、あなたがそれらの楕円で省略したものを含む3つのオブジェクトのリストです。私はあなたが何かをプッシュした後に空の配列で巻き上げる可能性があることを説明することはできません。実際のコードを表示する必要があります。 [mcve] –

+0

ここで@DanielBeckは[JSFiddle](https://jsfiddle.net/0u6zorau/2/)です。 – fdsfdsgf

答えて

0

あなたのフィドルは問題が何であるかを示しています。あなたはajax呼び出しを行い、コールが返った後に配列にデータをプッシュします。配列のconsole.logはajax呼び出しが返る前に起こるので、配列はその時点でまだ空です。

コールバック内のデータをconsole.logに記録すると、実際のデータが表示されます。非常に簡単な例:

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 
関連する問題