Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用JavaScript编写返回数组的函数?_Javascript_Jquery - Fatal编程技术网

如何用JavaScript编写返回数组的函数?

如何用JavaScript编写返回数组的函数?,javascript,jquery,Javascript,Jquery,我有以下JSON,我正在使用泛型函数解析它,并期望返回值 { "items": { "item": { "Beverages": [ { "id": "0004", "name": "Thums Up", "i

我有以下JSON,我正在使用泛型函数解析它,并期望返回值

{
    "items":
    {
        "item":
        {
            "Beverages":
                [

                    {
                        "id": "0004",
                        "name": "Thums Up",
                        "image":{"url": "images/0001.jpg","width": 200,"height": 200},
                        "Can":[ "250ml", "300ml","330ml", {"image":"images/0001.jpg" }],
                        "Bottle":[ "350ml",  "600ml", {"image":"images/0001.jpg" } ],
                        "Fountain":["small", "large", {"image":"images/0001.jpg" }]
                    },
                    {
                        "id": "0005",
                        "name": "Pepsi",
                        "image":{"url": "images/0001.jpg","width": 200,"height": 200},
                        "Can":[ "250ml", "300ml","330ml", {"image":"images/0001.jpg" }],
                        "Bottle":[ "350ml",  "600ml", {"image":"images/0001.jpg" } ],
                        "Fountain":["small", "large", {"image":"images/0001.jpg" }]
                    }
                ],

            "Snacks":
                [
                    {
                        "id": "0010",
                        "name": "Puffs",
                        "image":{"url": "images/0001.jpg","width": 200,"height": 200},
                        "Veg":["Veg puff", {"image":"images/0001.jpg" }],
                        "Egg":["Egg puff", {"image":"images/0001.jpg" }],
                        "Chicken":["Chicken puff", {"image":"images/0001.jpg" }]
                    },
                    {
                        "id": "0011",
                        "name": "Samosa",
                        "image":{"url": "images/0001.jpg","width": 200,"height": 200},
                        "Aloo Samosa":["small", "big", {"image":"images/0001.jpg" }],
                        "Corn Samosa":["small", "big", {"image":"images/0001.jpg" }]
                    }
                ]

        }
    }
}
在我的程序中,我传递值,并期望从中得到一个数组

这是我的完整程序。我正在为此使用jQuery

我是这样做的:

$(document).ready(function (jsondata) {
    var value = 'Beverages';
    var retdata[] = returnValues(value);
    for (int i = 0; i < retdata.length; i++) {
        alert(retdata[i]);
    }
});

function returnValues(value) {
    var data = [];
    $.each(jsondata.items.item, function (i, v) {
        if (i == value) {
            data.push[i];
        }
    });

    return data;
}
$(文档).ready(函数(jsondata){
var值=‘饮料’;
var retdata[]=返回值(值);
for(int i=0;i
我是一名Java开发人员,对JS的了解非常少 如果这种方式是完全错误的,也请让我知道,这样我可以相应地改变

对不起,如果这是一个很难回答的问题,会让你感到困惑

我的问题是
我的意思是如果你看到上面的json,如果我直接传递Pepsi的值, 我能得到图像、罐子、瓶子和喷泉的值吗??
同样地,如果我传递了值Beverages,我应该得到Beverages的所有子元素。看起来这是用Java编写的,然后尝试更改一些关键字以使其在浏览器中工作

您遇到的问题:

  • 没有像
    int这样的关键字

  • .push()
    需要
    ()
    ,而不是
    []
    ,因为它是一个函数调用

  • 变量类型在Javascript中不是显式的。不需要在变量名后添加
    []
    来定义数组


  • 也许这就是你想要的:

    var obj = $.parseJSON(dataJson);
    

    你的问题是什么?我的意思是如果你看到上面的json,如果我直接传递值Pepsi value,我能得到图像、罐头、瓶子和喷泉的值吗??同样,如果我传递值,我应该得到Beverages的所有子元素。如果你有几个语法错误,你应该真正使用调试器:
    var retdata[]=returnValues(value)应为
    var retdata=returnValues(值)
    for(int i=0;i
    应该是
    for(var i=0;i
    。@Korikulum,最初我只尝试了taht方法,但它在控制台中抛出了一个错误,说“未定义”。到底什么是未定义的,哪个变量?感谢您的回答,万一我通过,它是否可能返回它的子元素名称,即pepsi和thumps up在本例中??如果您执行另一个循环来遍历每个饮料对象属性,那么是的。谢谢Sam,而不是这样,是否可以编写一个泛型函数,以便在传递名称时,它将返回该名称的数组??一个泛型函数,用于深入搜索对象以查找与给定名称匹配的数组?