Javascript Jquery通过Json对象循环
Json代码Javascript Jquery通过Json对象循环,javascript,jquery,json,Javascript,Jquery,Json,Json代码 { "pizza": { "pepperoni lovers": { "topping": "pepperoni", "crust": "hand tossed" }, "sausage lovers": { "topping": "sausage", "crust": "hand tossed" } } } 我如何循环执行此操作并仅使用名称填充数组?属性名称数组?使用: 迭代对象的经典方
{
"pizza":
{
"pepperoni lovers":
{
"topping": "pepperoni",
"crust": "hand tossed"
},
"sausage lovers":
{
"topping": "sausage",
"crust": "hand tossed"
}
}
}
我如何循环执行此操作并仅使用名称填充数组?属性名称数组?使用:
迭代对象的经典方法是使用
for。。在
循环中
for (prop in obj) {
val = obj[prop];
}
这种技术的一个可能的副作用是,不能保证以任何特定顺序迭代属性。如果提前知道属性名,可以创建属性名数组并进行迭代
由于对象是嵌套的,因此需要为..嵌套两个。。在
循环中彻底迭代:
for (prop in obj) {
nested_obj = obj[prop];
for (nested_prop in nested_obj) {
nested_val = nested_obj[nested_prop];
}
}
要获取所有属性名称的数组,可以按如下方式构建该数组:
props = [];
for (prop in obj) {
props.push(prop);
nested_obj = obj[prop];
for (nested_prop in nested_obj) {
props.push(nested_prop);
nested_val = nested_obj[nested_prop];
}
}
您可以使用for…在对象属性中循环:
a = [];
for (n in pizza) {
a.push(n);
}
jQuery,假设对象正确
这是一个输入错误,还是你真的错过了每个比萨饼类型所需的
:
。这不是有效的JSON。不使用jQuery进行循环可能会让你省去一些麻烦…@FelixKling谢谢你的链接。我来自XML世界。我不知道我可以将代码重组为在.json文件中有一个数组。他说这个对象来自JSON(或者可能是一个对象文字),所以原型链上不会有任何可枚举的东西。很好,Bergi。旧习惯很难改掉。而且他只需要top object中的道具,而不是obj[prop],最后一部分没有明确说明。这是(虽然这里的代码是正确的)。这能说明内部对象的属性名称吗?@Rick:不,但我认为OP不需要它们-我想他只对比萨饼的名称感兴趣。聪明。我总是认为美元。在这些情况下……如果你不想硬编码“意大利香肠爱好者”这个名字,你怎么才能得到只有意大利香肠爱好者(顶部、外壳)的价值呢?我不理解这个问题。你能给我完整的用例吗?没关系。我来自XML世界。我不知道可以在Json中使用数组。一旦我发现其他一切都安排妥当了。谢谢你的快速回复。
a = [];
for (n in pizza) {
a.push(n);
}
var pizzaNames=[],
data = { "pizza" : {
"pepperoni lovers":
{
"topping": "pepperoni",
"crust": "hand tossed"
},
"sausage lovers":
{
"topping": "sausage",
"crust": "hand tossed"
}
}
}
// $.each is IE8 compatible, Object.keys is not
$.each(data.pizza,function(name,val) {
pizzaNames.push(name);
});