要迭代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
为什么会这样?
答案 0 :(得分:3)
您要在每个数组中声明一个新数组,只需删除此行:
var list = new Array();
保留第一个。
答案 1 :(得分:0)
因为您使用var
,list
仅在此代码创建的匿名函数中定义:
$.each(this, function (k, v) {
var list = new Array();
console.log(v.value);
list.push(v.value);
});
这称为变量范围。您在此函数中修改的list
与代码第一行中声明的list
不同,因为一个是全局的,另一个是本地的。