Javascript 遍历json对象的所有元素

Javascript 遍历json对象的所有元素,javascript,jquery,Javascript,Jquery,我有一个ajax调用,在成功中,我得到了以下格式的json对象: {test 1: Array(2), test 2: Array(3), test 3: Array(2)} 每个键内的数组看起来像 0: {IdProduct: "1", ProductName: "p1", ProductCode: "pc1", ProductVersion: "pv1"} 1: {IdProduct: "2", ProductName: "p2", ProductCode: "pc2", ProductV

我有一个ajax调用,在成功中,我得到了以下格式的json对象:

{test 1: Array(2), test 2: Array(3), test 3: Array(2)}
每个键内的数组看起来像

0: {IdProduct: "1", ProductName: "p1", ProductCode: "pc1", ProductVersion: "pv1"}
1: {IdProduct: "2", ProductName: "p2", ProductCode: "pc2", ProductVersion: "pv2"}
我想遍历所有这些元素来创建一个选项组 我的理解是有两个for循环,并在第一个循环中创建级别,在第二个循环中创建选项,我编写了以下代码,但效果不好:

    success: function(response) {
                    var options = '<optgroup label="'+Object.keys(response)[0]+'">';
                    response.forEach(function (data) {
                        options += '<option value="' + data.IdProduct + '">' + data.ProductName;
                        options += '</option>';
                    });
 options += '</optgroup>';
                    productsFilter.html(options);
                }
成功:功能(响应){
var选项=“”;
response.forEach(函数(数据){
选项+=''+data.ProductName;
选项+='';
});
选项+='';
productsFilter.html(选项);
}

要做到这一点,您确实需要两个循环。我在中做了一个for,遍历了最上面的JSON属性,然后对数组使用了您的foreach。顺便说一下,我模拟了JSON响应,只是为了填充其余部分

var响应={
“测试1”:[{
IdProduct:“1”,
产品名称:“p1”,
产品代码:“pc1”,
产品版本:“pv1”
},{
IdProduct:“2”,
产品名称:“p2”,
产品代码:“pc2”,
产品版本:“pv2”
}], 
“测试2”:[{
IdProduct:“3”,
产品名称:“p3”,
产品代码:“pc3”,
产品版本:“pv3”
},{
IdProduct:“4”,
产品名称:“p4”,
产品代码:“pc4”,
产品版本:“pv4”
},{
IdProduct:“5”,
产品名称:“p5”,
产品代码:“pc5”,
产品版本:“pv5”
}], 
“测试3”:[{
IdProduct:“6”,
产品名称:“p6”,
产品代码:“pc6”,
产品版本:“pv6”
},{
IdProduct:“7”,
产品名称:“p7”,
产品代码:“pc7”,
产品版本:“pv7”
}]};
var期权=”;
对于(响应中的var键){
选项+='';
响应[key].forEach(函数(数据){
选项+=''+data.ProductName;
选项+='';
});
选项+='';
}
var productsFilter=$(“选择#productsFilter”);
productsFilter.html(选项)


由于您的响应是一个json对象,当您执行for循环时,它将json的键作为元素,因此要访问内部的数组,您需要执行“response[data].IdProduct”…如何创建第一个for循环以访问test1、test2等?所有这些元素都不在数组中,请在post@JayBlanchard这些PHP帖子与此JavaScript帖子有何关联?@srikantamondal只需做一个for循环来遍历json的键,然后再对其元素进行另一个循环,如果它是一个数组,请查看fiddle:@Teemu,然后再进行OP用PHP标记的编辑。老实说,这个问题可能也有同样多的JS副本。