这是Json代码的一个片段:
myObj = {
'name': 'John',
'age': 30,
'cars': [
{'name': 'Ford', 'models': ['Fiesta', 'Focus', 'Mustang']},
{'name': 'BMW', 'models': ['320', 'X3', 'X5']},
{'name': 'Fiat', 'models': ['500', 'Panda']}
]
}
var myObj, i, j, x = '';
myObj = {
'name': 'John',
'age': 30,
'cars': [
{'name': 'Ford', 'models': ['Fiesta', 'Focus', 'Mustang']},
{'name': 'BMW', 'models': ['320', 'X3', 'X5']},
{'name': 'Fiat', 'models': ['500', 'Panda']}
]
};
for (i in myObj.cars) {
x += '<h1>' + myObj.cars[i].name + '</h1>';
for (j in myObj.cars[i].models) {
x += myObj.cars[i].models[j] + '<br>';
}
}
document.getElementById('demo').innerHTML = x;
我的主要困惑是for var myObj, i , j, x
,什么是i
,j
和x
?是i
只是引用Ford
,而j
是指BMW
吗?
对于此部分,for (i in myObj.cars) {x += "<h1>" + myObj.cars[i].name + "</h1>";
I
究竟会发生什么,只需添加新名称,h1
是什么?
答案 0 :(得分:0)
i 是您汽车的索引。
0: { "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] },
1: { "name":"BMW", "models":[ "320", "X3", "X5" ] },
2: { "name":"Fiat", "models":[ "500", "Panda" ] }
j 是模型的索引。
0: "Fiesta"
1: "Focus"
2: "Mustang"
答案 1 :(得分:0)
首先,这是一个javascript对象,但你仍然可以操作它。您可能希望对JSON和javascript之间的主要区别进行一些研究。
至于你问题的第一部分:i, j, x
都是指新变量,它等同于说
var i;
var j;
var x = "";
使用空字符串初始化 x
,因为它将在程序中稍后包含一个字符串。
变量i
用作for (i in myObj.cars) {}
中的索引,以跟踪对象myObj.cars
的每个属性。
这包括:
0: {'name': 'Ford', 'models': ['Fiesta', 'Focus', 'Mustang']},
1: {'name': 'BMW', 'models': ['320', 'X3', 'X5']},
2: {'name': 'Fiat', 'models': ['500', 'Panda']}
同样,块j
中使用变量for (j in myObj.cars[i].models) {}
来引用myObj.cars[i].models
内的不同对象。
例如,在循环的第一次迭代期间,j
将等于0,i
将等于0,myObj.cars[i].models[j]
将引用此数组:[ "Fiesta", "Focus", "Mustang" ]
至于问题的第二部分<h1>
只是一个HTML标头标记,您的程序将自定义此标头标记内的文字。
在这部分节目中:
for (i in myObj.cars) {
x += "<h1>" + myObj.cars[i].name + "</h1>";
i
被设置回零,现在它将循环遍历myObj.cars内的整个对象列表
在javascript中,您可以“重新初始化”变量,或者更好地说,动态更改其值。