Json Code
{
"pizza":
{
"pepperoni lovers":
{
"topping": "pepperoni",
"crust": "hand tossed"
},
"sausage lovers":
{
"topping": "sausage",
"crust": "hand tossed"
}
}
}
我怎样才能遍历这个并用一个名字填充一个数组?
答案 0 :(得分:3)
一系列属性名称?使用this:
var names = Object.keys(data.pizza);
答案 1 :(得分:1)
迭代对象的经典方法是使用for .. in
循环。
for (prop in obj) {
val = obj[prop];
}
此技术的一个可能的副作用是,您无法保证以任何特定顺序迭代属性。如果您提前知道属性名称,则可以创建一个属性名称数组并进行迭代。
由于你的对象是嵌套的,你需要嵌套两个for .. in
循环来彻底迭代:
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];
}
}
答案 2 :(得分:1)
您可以使用for ... in:
循环遍历对象属性a = [];
for (n in pizza) {
a.push(n);
}
答案 3 :(得分:0)
jQuery,假设一个正确的对象
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);
});