2014-02-13 67 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不同,因为其中一个是全局的,另一个是本地的。