使用JQuery从JSON数组解析第N个项的语法

hug*_*dan 0 javascript jquery

我见过许多JQuery示例,它们使用$ .each来循环遍历JSON数组.但是,需要做的是单独抓取项目0 - 3并将它们传递给另一个名为"搜索"的函数.这就是我想出来的.

        $.getJSON("http://localhost:61741/binggame/play?cat=Body%20Parts", {
        tags: "English",
        tagmode: "any",
        format: "json"

    },


function (data) {

    Search(data.items[0], "Box1_Image");
    Search(data.items[1], "Box2_Image");
    Search(data.items[2], "Box3_Image");
    Search(data.items[3], "Box4_Image");
});
Run Code Online (Sandbox Code Playgroud)

我很确定data.items []不是正确的语法.

这是我的JSON示例:

{"nouns":[
    {
        "ID":26,
        "Category":"Body Parts",
        "English":"muscle",
        "Pinyin":"gei yUk",
        "Image1":null,
        "Audio1":null
    },
    {
        "ID":27,
        "Category":"Body Parts",
        "English":"neck",
        "Pinyin":"gen",
        "Image1":null,
        "Audio1":null
    },
    {
        "ID":28,
        "Category":"Body Parts",
        "English":"nose",
        "Pinyin":"bei",
        "Image1":null,
        "Audio1":null
    },
    {
        "ID":29,
        "Category":"Body Parts",
        "English":"rib",
        "Pinyin":"lat gwt",
        "Image1":null,
        "Audio1":null
    }
]}
Run Code Online (Sandbox Code Playgroud)

对于此示例,data.items [0]的值应为"muscle",data.items [1]应为"neck",data.items [2]应为"nose",data.items [3]应为是"肋骨".

有人能指出我做错了什么吗?

Mat*_*all 6

有人能指出我做错了什么吗?

首先,items您的JSON中没有属性名称.


如果你想得到"muscle":data.nouns[0].English

如果你想得到"neck":data.nouns[1].English

等等:

function (data) {

    Search(data.nouns[0].English, "Box1_Image");
    Search(data.nouns[1].English, "Box2_Image");
    Search(data.nouns[2].English, "Box3_Image");
    Search(data.nouns[3].English, "Box4_Image");
});
Run Code Online (Sandbox Code Playgroud)

或者,保持DRYer:

function (data) {
    var nouns = data.nouns;

    function getNoun(i) {
        return nouns[i].English;
    }

    Search(getNoun(0), "Box1_Image");
    Search(getNoun(1), "Box2_Image");
    Search(getNoun(2), "Box3_Image");
    Search(getNoun(3), "Box4_Image");
});
Run Code Online (Sandbox Code Playgroud)

或者更好的是:

function (data) {
    var nouns = data.nouns;

    for (var i=0; i<4; i++) {
        Search(nouns[i].English, 'Box' + (i+1) + '_Image');
    }
});
Run Code Online (Sandbox Code Playgroud)