Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery通过Json对象循环_Javascript_Jquery_Json - Fatal编程技术网

Javascript Jquery通过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" } } } 我如何循环执行此操作并仅使用名称填充数组?属性名称数组?使用: 迭代对象的经典方

Json代码

{
 "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);
});