-1

グラフの情報を入力するために javascript でいくつかの for ループを実行しようとしましたが、ユーザーが特定の量の食品を選択するとエラーが発生し、次に食品の名前を持つ食品の配列と、対応するタンパク質のカロリーと脂肪の配列が入力されますそれぞれの食べ物に。

ここに私が今持っているコードがあります。SyntaxError現在、 Uncaught : Unexpected tokenというエラーが表示されます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]
                }
        }
    }]

私は彼らがこのようなシリーズを持っていたウェブサイトからチャートをコピーしました

series: [{
                name: 'London',
                data: [48.9, 38.8, 39.3, 41.4, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 51.2]

            }, {
                name: 'Berlin',
                data: [42.4, 33.2, 34.5, 39.7, 52.6, 75.5, 57.4, 60.4, 47.6, 39.1, 46.8, 51.1]   
            }]

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>

そして前に

series:  [{
                name: 'Tokyo',
                data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
            }, {
                name: 'New York',
                data: [83.6, 78.8, 98.5, 93.4, 106.0, 84.5, 105.0, 104.3, 91.2, 83.5, 106.6, 92.3]
            }, {
                name: 'London',
                data: [48.9, 38.8, 39.3, 41.4, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 51.2]

            }, {
                name: 'Berlin',
                data: [42.4, 33.2, 34.5, 39.7, 52.6, 75.5, 57.4, 60.4, 47.6, 39.1, 46.8, 51.1]   
            }],
});
4

2 に答える 2

4

forあなたがしようとしているように、オブジェクトのプロパティをループにすることはできません。これは有効な 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]]
    });
}

あなたの質問のコードは、JavaScript 構文に関する根本的な理解の欠如を示唆しています。オブジェクト リテラルについて読むことをお勧めします。

于 2012-12-09T06:12:22.917 に答える
-1

こんにちは、実際に試したことはありませんが、次のように考えています。

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);
}
于 2012-12-09T06:23:36.613 に答える