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