Javascript 在JQuery中,如何在foreach中包含foreach?

Javascript 在JQuery中,如何在foreach中包含foreach?,javascript,highcharts,Javascript,Highcharts,嘿,伙计们!首先,我知道这类事情很糟糕,但这就是我想象实现目标的方式 这里是交易:我有一个包含数组的JSon对象,但不幸的是,我必须遍历一个JSon对象的列表,然后遍历我之前启动的数组。JSon对象如下所示(它是葡萄牙语的,但你们可以理解它): {“produtos”:[{“Key”:“derividos DE FERRO”,“Value”:217816909},{“Key”:“MADEIRAS, 人力资源和人力资源部(SUAS Manufacturas E MOBILIÁRIO MÉDICO)

嘿,伙计们!首先,我知道这类事情很糟糕,但这就是我想象实现目标的方式

这里是交易:我有一个包含数组的JSon对象,但不幸的是,我必须遍历一个JSon对象的列表,然后遍历我之前启动的数组。JSon对象如下所示(它是葡萄牙语的,但你们可以理解它):

{“produtos”:[{“Key”:“derividos DE FERRO”,“Value”:217816909},{“Key”:“MADEIRAS, 人力资源和人力资源部(SUAS Manufacturas E MOBILIÁRIO MÉDICO) CIRÚRGICO,“Value”:117812290},{“Key”:“CELULOSE, 苏阿丘疹 OBRAS,“Value”:100086937},{“Key”:“CARNE” 苏娜,“值”:81738783},{“键”:“卡恩” BOVINA,“Value”:74894768},{“Key”:“CARNE DE” AVES,“Value”:65292433},{“Key”:“Outros”,“Value”:444520811}],“ano”:2005,“tipo”:1}

Produtos是我提到的数组,我还有另外两个重要的值:ano(year)和tipo(type)。我的代码如下所示:

jQuery.getJSON("/webportos/Porto/GraficoComercio?id=" + iddoporto.className + "&ano=2005", null, function (items) {                
    jQuery.each(items, function (itemNo, item) {
        jQuery.each(item.produtos, function (dicNo, dic) {
            options.series.push({ name: dic.Key, data: dic.Value});                             
            options.title.text = "Comércio - "+item.ano;
            options.yAxis.title.text = "Exportação";                                
            options.tooltip.formatter = function () {
                return '<b><u>' + this.series.name + '</u></b><br/><b>' + this.x + '</b>: ' + this.y + ' ';
            }           
        });
    });

    chart = new Highcharts.Chart(options);              
});
jQuery.getJSON(“/webportos/Porto/graficomercio?id=“+iddoporto.className+”&ano=2005”,null,函数(项){
每个(项,函数(项号,项){
jQuery.each(item.produtos,function)(dicNo,dic){
options.series.push({name:dic.Key,data:dic.Value});
options.title.text=“Comércio-”+item.ano;
options.yAxis.title.text=“Exportação”;
options.tooltip.formatter=函数(){
返回“+this.series.name+”
“+this.x+”:“+this.y+”; } }); }); 图表=新的高点图表。图表(选项); });
这段代码使Chrome javascript控制台显示:

ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js:32未捕获类型错误:无法读取未定义的属性“length”


你们能帮帮我吗?

你们不需要jQuery来迭代JSON数据。使用普通的老Javascript

见这个问题:

功能渲染器(obj){
变量键=[]
var retValue=“”
for(obj中的var键){
如果(对象的类型[键]=“对象”){
retValue+=“”+键
retValue+=renderJSON(对象[键])
retValue+=“”
}
否则{
retValue+=''+key+''=''+obj[key]+''
}
按键。按(键)
}
返回值
}

您不需要jQuery来迭代JSON数据。使用普通的老Javascript

见这个问题:

功能渲染器(obj){
变量键=[]
var retValue=“”
for(obj中的var键){
如果(对象的类型[键]=“对象”){
retValue+=“”+键
retValue+=renderJSON(对象[键])
retValue+=“”
}
否则{
retValue+=''+key+''=''+obj[key]+''
}
按键。按(键)
}
返回值
}

这是因为您试图在非数组上使用.each()吗

jQuery.each(items, function (itemNo, item) {
据我所知,jQuery.each(对象、回调、参数)仅用于数组。它做的第一件事是调用object.length。所以除非你有

[{“produtos”:[{“Key”:“derividos DE FERRO”,“Value”:217816909},{“Key”:“MADEIRAS,SUAS” 曼努法图拉斯移动机械公司,“价值”:117812290},{“关键”:CELULOSE,PAPEL E SUAS OBRAS,“Value”:100086937},{“Key”:“CARNE SUÍNA”,“Value”:81738783},{“Key”:“CARNE” BOVINA,“Value”:74894768},{“Key”:“CARNE DE AVES”,“Value”:65292433}, {“Key”:“Outros”,“Value”:444520811}],“ano”:2005,“tipo”:1}]

你会犯那个错误的


此外,你可以考虑迪奥多斯的建议。jQuery.each的性能比仅使用for循环数据要差得多。

这是因为您试图在非数组上使用.each()

jQuery.each(items, function (itemNo, item) {
据我所知,jQuery.each(对象、回调、参数)仅用于数组。它做的第一件事是调用object.length。所以除非你有

[{“produtos”:[{“Key”:“derividos DE FERRO”,“Value”:217816909},{“Key”:“MADEIRAS,SUAS” 曼努法图拉斯移动机械公司,“价值”:117812290},{“关键”:CELULOSE,PAPEL E SUAS OBRAS,“Value”:100086937},{“Key”:“CARNE SUÍNA”,“Value”:81738783},{“Key”:“CARNE” BOVINA,“Value”:74894768},{“Key”:“CARNE DE AVES”,“Value”:65292433}, {“Key”:“Outros”,“Value”:444520811}],“ano”:2005,“tipo”:1}]

你会犯那个错误的

此外,你可以考虑迪奥多斯的建议。与仅使用for循环数据相比,jQuery.each的性能要差得多