Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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 在json中搜索特定键并查找上一个和下一个类似键_Javascript_Jquery_Json - Fatal编程技术网

Javascript 在json中搜索特定键并查找上一个和下一个类似键

Javascript 在json中搜索特定键并查找上一个和下一个类似键,javascript,jquery,json,Javascript,Jquery,Json,与Brnwdrn的问题类似,我正在寻找一种方法来搜索类似JSON的对象,并找到上一个类似键和下一个类似键。 假设我的对象的结构是这样的: TestObj = { "Categories": [{ "Products": [{ "id": "a01", "name": "Pine", "description": "Short description of pine." }, { "id": "a02",

与Brnwdrn的问题类似,我正在寻找一种方法来搜索类似JSON的对象,并找到上一个类似键和下一个类似键。 假设我的对象的结构是这样的:

TestObj = {
"Categories": [{
    "Products": [{
        "id": "a01",
        "name": "Pine",
        "description": "Short description of pine."
    },
    {
        "id": "a02",
        "name": "Birch",
        "description": "Short description of birch."
    },
    {
        "id": "a03",
        "name": "Poplar",
        "description": "Short description of poplar."
    }],
    "id": "A",
    "title": "Cheap",
    "description": "Short description of category A."
},
{
    "Product": [{
        "id": "b01",
        "name": "Maple",
        "description": "Short description of maple."
    },
    {
        "id": "b02",
        "name": "Oak",
        "description": "Short description of oak."
    },
    {
        "id": "b03",
        "name": "Bamboo",
        "description": "Short description of bamboo."
    }],
    "id": "B",
    "title": "Moderate",
    "description": "Short description of category B."
}]
})

现在我想找到一个名为oak的标题,在我发现我还想找到oak之前的最后一个标题,在这个例子中是枫树,下一个标题是竹子

如果有人能给我指出正确的方向或给我一个伪代码,我将不胜感激

谢谢

像这样做吧

i = 0;
foreach obj in TestObj
   if obj.title = Oak,
      last_title = TestObj[i].title;
      next_title = TestObj[i+2].title;
      i++;
endfor

好的,这里有一个快速代码

TestObj = {
"Categories": [{
    "Products": [{
        "id": "a01",
        "name": "Pine",
        "description": "Short description of pine."
    },
    {
        "id": "a02",
        "name": "Birch",
        "description": "Short description of birch."
    },
    {
        "id": "a03",
        "name": "Poplar",
        "description": "Short description of poplar."
    }],
    "id": "A",
    "title": "Cheap",
    "description": "Short description of category A."
},
{
    "Products": [{
        "id": "b01",
        "name": "Maple",
        "description": "Short description of maple."
    },
    {
        "id": "b02",
        "name": "Oak",
        "description": "Short description of oak."
    },
    {
        "id": "b03",
        "name": "Bamboo",
        "description": "Short description of bamboo."
    }],
    "id": "B",
    "title": "Moderate",
    "description": "Short description of category B."
}]
};

var oak, beforeOak, afterOak;

for(var i=0;i<TestObj.Categories.length;i++){
    var products = TestObj.Categories[i].Products;
       for(var j=0; j< products.length;j++){
        var product = products[j];

        if(product.name === 'Oak'){
            oak = product;
            beforeOak = products[j-1];
            afterOak = products[j+1];
            break;

        }
    }
    if(oak) break;
}

alert("Oak : "+JSON.stringify(oak));
alert("Before Oak : "+JSON.stringify(beforeOak));
alert("After Oak :" + JSON.stringify(afterOak));
请在此处查看它的实际操作:

这很容易理解。如果还没有,JSON是JavaScript的本机对象结构。因此,您可以使用点符号访问它

顺便说一句,您的json有点不一致。第二类阵列产品的关键
是产品而不是产品。所以我冒昧地纠正了它。

如果您使用for循环迭代类别中的所有产品,这是非常容易做到的。你试过了吗?我一定会查出来的谢谢。嘿,尼基,我被困在这里了,你能帮我怎么做吗。我对javascript非常陌生,我对它几乎没有经验。我会在我的代码中尝试,如果它产生了我想要的结果,我会告诉你。我对此非常陌生。你能帮我编写一个实际的代码而不是伪代码吗?我试过几次,但效果不好,如果你能告诉我如何从外部jason文件名为master.js,其中存储了所有json数据。