我是一个新手试图用javascript编写一个巴士停止应用程序。
我需要构建一个ID为street和街道名称的JSON。
我已经建立了这个json:
{
"id1": "2001",
"street1": "street name a",
"id2": "1297",
"street2": "street name b",
"id3": "1347",
"street3": "street name c",
"id4": "3310",
"street4": "street name d",
"id5": "4770",
"street5": "street name e",
"id6": "3133",
"street6": "street name f",
"id7": "3230",
"street7": "street name g",
"id8": "1471",
"street8": "street name h",
"id9": "1002",
"street9": "street name i",
"id10": "3816",
"street10": "street name l"
}
有10个站点可供选择,但只需要一个。
我需要在纯javascript,没有jQuery或其他JS框架中执行此操作。
所以我想循环这个JSON以检查哪个id未定义,以便仅使用带有值的id。
我尝试在谷歌和这里建立一个简单的for循环用于JSON解析搜索,但我是JSON的新手,并且所有解决方案都不适合我的需求。
请有人教我如何做...同时我将研究JSON的工作原理。
答案 0 :(得分:2)
将您的JSON重新定义为对象数组,您可以使用索引遍历它:
var stops = [
{"id": "2001",
"street": "street name a"},
{"id": "1297",
"street": "street name b"}
...
]
答案 1 :(得分:2)
您的数据结构中不应该有索引器,因此使用id而不是id1和street而不是street1,元素在结构中的位置决定了它的索引。想象一下,在名称中有一个索引器会发生什么,五百个公共汽车站,你需要在索引3处设置一个新的公共汽车站?
所以数据结构变成了:
var busstops = [
{ "id": "2001", "street": "street name a"},
{ "id": "1297", "street": "street name b"},
{ "id": "1347", "street": "street name c"},
{ "id": "3310", "street": "street name d"},
{ "id": "4770", "street": "street name e"},
{ "id": "3133", "street": "street name f"},
{ "id": "3230", "street": "street name g"},
{ "id": "1471", "street": "street name h"},
{ "id": "1002", "street": "street name i"},
{ "id": "3816", "street ": "street name l"}
]
不,你可以循环它:
var i = 0;
while (stop = busstops[i++]) {
alert(stop.id);
}
答案 2 :(得分:1)
这是循环浏览这个json对象的方法。
您可以将json定义分配给变量,如果这个json定义必须使用function JSON.parse()
var data = {
"id1": "2001",
"street1": "street name a",
"id2": "1297",
"street2": "street name b",
"id3": "1347",
"street3": "street name c",
"id4": "3310",
"street4": "street name d",
"id5": "4770",
"street5": "street name e",
"id6": "3133",
"street6": "street name f",
"id7": "3230",
"street7": "street name g",
"id8": "1471",
"street8": "street name h",
"id9": "1002",
"street9": "street name i",
"id10": "3816",
"street10": "street name l"
}
如果你知道这个对象有多少个公共汽车站,你可以这样做
var stops = 10;
for (var i=1;i<=stops;i++)
{
var id = data['id'+i]; // it returns '2001' in the first iteration
var street = data['street'+i]; // it returns 'street name a' in the first iteration
}
以下是 jsFiddle
的示例