Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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中运行几个for循环以填充图表信息,但会出现错误_Javascript_Json_Highcharts - Fatal编程技术网

尝试在javascript中运行几个for循环以填充图表信息,但会出现错误

尝试在javascript中运行几个for循环以填充图表信息,但会出现错误,javascript,json,highcharts,Javascript,Json,Highcharts,尝试在javascript中运行几个for循环以填充图表信息,但会出现错误 用户选择一定量的食物,然后填充食物数组,食物数组中包含食物名称,然后填充对应于每种食物的蛋白质卡路里和脂肪数组 这是我现在的代码。当前,我收到一个错误,显示UncaughtSyntaxError:意外标记var: var fat = $.parseJSON('<?php print(json_encode($fat, true)); ?>'); var calorie = $.parseJSON('<?

尝试在javascript中运行几个for循环以填充图表信息,但会出现错误 用户选择一定量的食物,然后填充食物数组,食物数组中包含食物名称,然后填充对应于每种食物的蛋白质卡路里和脂肪数组

这是我现在的代码。当前,我收到一个错误,显示Uncaught
SyntaxError
:意外标记
var

var fat = $.parseJSON('<?php print(json_encode($fat, true)); ?>');
var calorie = $.parseJSON('<?php print(json_encode($calorie, true)); ?>');
var protein = $.parseJSON('<?php print(json_encode($protein, true)); ?>');
var food = $.parseJSON('<?php print(json_encode($food, true)); ?>');

series: [{
    for (var i=0;i<food.length;i++){
        name: food[i],
        data: for (var j=0;j<fat.length;j++){
                    calorie[j], protein[j], fat[j]
                }
        }
    }]
如何修复for循环以使其工作

script type="text/javascript">
$(function () {
    var chart;
    var fat = $.parseJSON('<?php print(json_encode($fat, true)); ?>');


    $(document).ready(function() {
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                type: 'column'
            },
            title: {
                text: 'MComparing foods is Awesome'
            },

            tooltip: {
                formatter: function() {
                    return ''+
                        this.x +': '+ this.y +' mm';
                }
            },
            plotOptions: {
                column: {
                    pointPadding: 0.2,
                    borderWidth: 0
                }
            },
            series : []
    for (var i=0; i<food.length; i++) 
{
        series.push({
        name: food[i],
        data: [calorie[i], protein[i], fat[i]]});
}
        });
    }); 
});
</script>

对象的属性不能像您尝试的那样是循环的
。这根本不是有效的JavaScript语法。(当然,在Python中,列表理解是可行的——但这不是Python。)

您需要创建一个数组,然后将其指定为属性值:

var series = [];

for (var i=0; i<food.length; i++) {

    series.push({
        name: food[i],
        data: [calorie[i], protein[i], fat[i]]
    });
}
var系列=[];

对于(var i=0;iHi),我实际上还没有尝试过,但我的想法是:

series = new Array();
for (i=0;i<food.length;i++) {
    item = new Object();
    item.name = food[i];
    item.data = new Array();
    item.data = item.data.concat(calorie,protein,fat);
    series.concat(item);
}
series=新数组();

对于(i=0;imy的问题是我不确定需要多少属性。我可以将包含所有食物名称的食物数组作为数组放在name属性中吗?我想你可以,但我真的不知道你要使用什么输出数据格式,因为你没有清楚地显示它。就此而言,问题不清楚rmat.是否可能有一个包含多个名称和数据的系列,这取决于用户决定的数量?输入是php中的数据数组,在该数组中,我将其编码为json并设置为javascript变量。我有多个名称的食物和数据卡路里、蛋白质和fatA系列的单独数组?我不知道这些数据在哪里这要看情况而定。我不熟悉highcharts。同样,确切的输入和输出数据格式很重要,但您尚未传达它们。您想要堆叠条吗?尝试做一个基本列为什么
新建数组()
新建对象()
而不是
[]
{}
?以这种速率,您可以将循环体的前3行变成
项={name:food[i],data:[]}
。此外,
Array.concat()
返回一个新数组,并且不会对原始数组进行变异。
var series = [];

for (var i=0; i<food.length; i++) {

    series.push({
        name: food[i],
        data: [calorie[i], protein[i], fat[i]]
    });
}
series = new Array();
for (i=0;i<food.length;i++) {
    item = new Object();
    item.name = food[i];
    item.data = new Array();
    item.data = item.data.concat(calorie,protein,fat);
    series.concat(item);
}
series = [];
for (i=0;i<food.length;i++) {
    item = {name: food[i], data: Array.concat(calorie,protein,fat)};
    series.push(item);
}