如何从Javascript函数返回多个值

时间:2014-05-29 09:40:11

标签: jquery

我有以下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;
}

2 个答案:

答案 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;