我正试图循环遍历json对象的嵌套数组。。
循环如下:
$("#test").text("");
for(var i=0;i<obj.length;i++){
$("#test").append(obj[i].line_item + ", ");
for(var j=0;j<obj[i].length;j++){
$("#test").append(obj[i][j].iid + ", ");
$("#test").append(obj[i][j].name + ", ");
$("#test").append(obj[i][j].price + ", ");
$("#test").append(obj[i][j].lid + ", ");
$("#test").append(obj[i][j].picture + "<br />");
}//for for
}//for
console.log我没有显示任何错误,当我回显php脚本时,我得到的输出是:
[{"line_item":"base","0":
{"iid":"1","name":"mix","price":"30","lid":"1","picture":"images'/mix.jpg"},
"1":{"iid":"2","name":"green","price":"30","lid":"1","picture":"images'/green.jpg"}}]
问题是:当我循环遍历数组时,我只得到html文件中的输出:base。
我的问题是:如何获取内部数组对象?
我猜你正试图这样做:
var a = [];
$.each(obj, function(i, arr) {
a.push(arr.line_item);
$.each(arr, function(j, ob) {
if (typeof ob == 'object') {
$.each(ob, function(key,value) {
a.push(value)
});
}
});
});
$("#test").text(a.join(', '));
FIDDLE
这是因为你使用的是一个对象而不是数组,所以你不能做:
obj[i].length
解决这个问题的一个简单方法是将项目放入数组中,示例JSON:
[{"line_item":"base", "items": [
{"iid":"1","name":"mix","price":"30","lid":"1","picture":"images'/mix.jpg"},
{"iid":"2","name":"green","price":"30","lid":"1","picture":"images'/green.jpg"}]}]
并将您的代码更改为:
$("#test").text("");
for(var i=0;i<obj.length;i++){
$("#test").append(obj[i].line_item + ", ");
for(var j=0;j<obj[i]['items'].length;j++){
var item = obj[i]['items'][j];
$("#test").append(item.iid + ", ");
$("#test").append(item.name + ", ");
$("#test").append(item.price + ", ");
$("#test").append(item.lid + ", ");
$("#test").append(item.picture + "<br />");
}//for for
}//for