我有以下JSON格式数组
[
{
"id": "0004",
"name": "Thums Up",
"image": {
"url": "pepsicup.jpg",
"width": 200,
"height": 200
},
"category": [
{
"category_name": "can",
"image": "images/0001.jpg",
"type": [
{
"type": "250ml",
"price": "50"
},
{
"type": "300ml",
"price": "150"
},
{
"type": "330ml",
"price": "200"
}
]
},
{
"category_name": "bottle",
"image": "images/0001.jpg",
"type": [
{
"type": "350ml",
"price": "60"
},
{
"type": "600ml",
"price": "110"
}
]
},
{
"category_name": "fountain",
"image": "images/0001.jpg",
"type": [
{
"type": "small",
"price": "160"
},
{
"type": "large",
"price": "260"
}
]
}
]
}
]
现在我使用下面的函数解析它并返回250ml,300ml和330ml类型。
是否可以返回多个值?
我的意思是我想要返回类型,价格和图像?
如果不能在返回类型中包含图像,使用上面的内容,我可以更改json结构,以便类型也可以包含图像。
function returndeepervaluesforinner(value) {
var innerdata = [];
console.log(JSON.stringify(retdata));
for(var i = 0; i < retdata.length; i++) {
if (retdata[i].name == "Thums Up") {
for (var b = 0; b < retdata[i].category.length; b++) {
if (retdata[i].category[b].category_name == "can") {
for (var d = 0; d < retdata[i].category[b].type.length; d++) {
innerdata.push(retdata[i].category[b].type[d].type);
}
}
}
}
}
return innerdata;
}
答案 0 :(得分:1)
函数返回的次数不能超过一次。但是要从函数中发送更多的值,要么将要返回的数据存储在数组中并返回数组,否则将值存储在自定义类的对象中,该类具有要作为对象的属性返回的值。
更好的方法应该是创建一个类并使用它。
让我知道这是否有用
答案 1 :(得分:1)
这是我更喜欢的解决方案。您可以返回一个对象数组,以便返回多个值。
<强> FIDDLE 强>
$.each(arr, function(i, item) {
$.each(item.category, function(j, item){
obj.image=item.image;
obj.type=[];
obj.price=[];
$.each(item.type, function(k,e){
obj.type.push(e.type);
obj.price.push(e.price)
});
objArray.push(obj);
});
});
return objArray;