【发布时间】:2018-01-17 12:00:44
【问题描述】:
我有一个字符串,我正在尝试循环访问。它有嵌套数组,我想从每一层获取值。但是,从第二层开始,我似乎得到了一个 undefined。
//字符串 [{"username":"test","usersurname":"test","cellnumber":"test","displayname":"test","profilepicture":"test","projects":[{"projectname":"test","dateadded":"test","notes":"test","image":"test"},{"task":[{"taskname":"test","taskdescription":"test","taskimage":"test"}]}]}]
//我的for循环——所有变量都先声明
for(var i = 0; i < data.length; i++){
username = data[i].username;
console.log(username);
usersurname = data[i].usersurname;
cellnumber = data[i].cellnumber;
displayname = data[i].displayname;
profilepicture = data[i].profilepicture;
for(var j = 0; j < data[i].projects.length; j++){
dateadded = data[i].projects[j].dateadded;
console.log(dateadded);
notes = data[i].projects[j].notes;
image = data[i].projects[j].image;
for(var k = 0; k < data[i].projects[j].task.length; k++){
taskname = data[i].projects[j].task[k].taskname;
console.log(taskname);
taskdescription = data[i].projects[j].task[k].taskdescription;
taskimage = data[i].projects[j].task[k].taskimage;
}
}
}
【问题讨论】:
-
旁注:JSON 是一种用于数据交换的文本表示法。 (More here.) 如果您正在处理 JavaScript 源代码,而不是处理 string,那么您就不是在处理 JSON。
-
使用
JSON.parse解析字符串,然后循环遍历 -
您发布的示例数据在
projects[i]中没有task属性 -
旁注:您可以通过定义更多变量(
user = data[i]; projects = user.projects; project = propects[j]等)而不是使用data[i].projects[j].task[k].propName来使代码更具可读性
标签: javascript arrays string object