Javascript 在json中搜索特定键并查找上一个和下一个类似键
与Brnwdrn的问题类似,我正在寻找一种方法来搜索类似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",
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数据。