2014-02-13 165 views
-1

遍歷我使用的JSON文件:陣列沒有被填充

var list = new Array(); 
$.getJSON("json.js", function (data) { 
    $.each(data, function() { 
     $.each(this, function (k, v) { 
      var list = new Array(); 
      console.log(v.value); 
      list.push(v.value); 
     }); 
    }); 
    console.log(list.length); 
}); 

JSON文件:

{ 
    "quotes": [ 
    { 
     "value": "q1" 
    }, 
    { 
     "value": "q2" 
    }, 
    { 
     "value": "q3" 
    } 
] 
} 

但列表的大小是零。

這裏是控制檯輸出:

q1 
q2 
q3 
0 

這是爲什麼出現?

+2

嘗試刪除第二個'var list = new Array()'。你推到一個局部變量,然後console.logging公共變量。 – brouxhaha

回答

3

您聲明在每個新陣列,只是刪除這一行:

var list = new Array(); 

保持第一位。

0

因爲你用varlist僅在這段代碼創建的匿名函數定義:

$.each(this, function (k, v) { 
    var list = new Array(); 
    console.log(v.value); 
    list.push(v.value); 
}); 

這就是所謂的變量範圍。您在此函數中修改的list與您的代碼的第一行中聲明的list不同,因爲其中一個是全局的,另一個是本地的。