javascript - 如何在 JQuery 中的 foreach 中包含 foreach?

标签 javascript highcharts

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

事情是这样的:我有一个包含数组的 JSon 对象,但不幸的是,我必须迭代一个 JSon 对象的列表,然后迭代我之前提到的那个数组。 JSon 对象如下所示(是葡萄牙语,但你们可以理解):

{"produtos":[{"Key":"DERIVADOS DE FERRO","Value":217816909},{"Key":"MADEIRAS, SUAS MANUFATURAS E MOBILIÁRIO MÉDICO CIRÚRGICO","Value":117812290},{"Key":"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}

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

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

这段代码使 Chrome javascript 控制台显示:

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

你们能帮帮我吗?

最佳答案

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

jQuery.each(items, function (itemNo, item) {

根据我的理解,jQuery.each(object,callback,args)仅适用于数组。它所做的第一件事是调用 object.length。所以除非你有

[{"produtos":[{"Key":"DERIVADOS DE FERRO","Value":217816909},{"Key":"MADEIRAS、SUAS MANUFATURAS E MOBILIÁRIO MÉDICO CIRÚRGICO","Value":117812290},{"Key":"CELULOSE, PAPEL E SUAS OBRAS","Value":100086937},{"Key":"CARNE SUÍNA","Value":81738783},{"Key":"CARNE BOVINA","值":74894768},{" key ":"CARNE DE AVES","值":65292433}, {"Key":"Outros","Value":444520811}],"ano":2005,"tipo":1}]

你会得到这个错误。

另外,你可以考虑Diodeus的建议。 jQuery.each 的性能比仅使用 for 循环数据要低得多。

关于javascript - 如何在 JQuery 中的 foreach 中包含 foreach?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4694782/

相关文章:

javascript - PHP Highcharts 按日期分组

javascript - 如何在 Highcharts 中获得 colorByPoint 外观,而不用将组中的所有条形着色为相同颜色?

javascript - 全局点击事件阻止元素的点击事件

c# - 如何复制 Excel 绘制 "Scatter with smooth lines"图形的操作

javascript - 如何验证两个不同的azure应用程序?

javascript - Angular uirouter 打开错误的网址

javascript - Highcharts 饼图缺少传奇

javascript - Highcharts 温度图例

javascript - 如何获得想要的输出? 2 输入名字和出生日期?

javascript - 图表js在运行时通过按钮单击显示/隐藏图例