Используйте данные из Underscore.js с гистограммой с накоплением Flot.js

У меня есть следующий Javascript внутри моего файла Twig, который создает исходный массив, который затем Underscore.js группирует по месяцам, а затем по WT. Я хочу взять данные из Underscore.js и передать их в Flot.js, чтобы составить столбчатую диаграмму с накоплением, каждый столбец которой соответствует месяцу, а затем столбец состоит из различных значений WT.

    init.push(function () {

        var Co2Data = [
        {% for c2 in co2Output %}
            {WT: '{{c2.wasteType}}', Month: '{{c2.completionDate}}', Weight:'{{c2.co2Saving}}'},
        {% endfor %}
        ]

        var groupedData = _.chain(Co2Data)
            .groupBy('Month')
            .map(function (group, key) {
            return {
                Month: key,
                WTs: _.chain(group)
                    .groupBy("WT")
                    .map(function (group, key) {
                    return {
                        WT: key,
                        TotalWeight: _.reduce(group, function(memo, i){ 
                            return memo + parseFloat(i.Weight); 
                        }, 0)
                    };
                })
                .value()
            }})
            .value();

                    var NewCo2Data = [
                        _.each(groupedData, function(m) {
                            {label: wt.WT, data: [[m.Month, wt.TotalWeight],]}
                        });
                    ];

        // Init Chart
        $('#jq-flot-bars-2').pixelPlot(NewCo2Data, {
            series: {
                bars: {
                    show: true,
                    barWidth: .9,
                    align: 'center'
                }
            },
            xaxis: { tickDecimals: 2 },
            yaxis: { tickSize: 1000 }
        }, {
            height: 205,
            tooltipText: "y + ' visitors at ' + x + '.00h'"
        });
    });

Однако, когда я загружаю это на мою страницу, я получаю следующую ошибку:

Ошибка синтаксиса: отсутствует; до заявления

{label: wt.WT, данные: [[m.Month, wt.TotalWeight],]}

Не уверен, почему это происходит?

1 ответ

Это не JavaScript:

var NewCo2Data = [
    _.each(groupedData, function(m) {
        {label: wt.WT, data: [[m.Month, wt.TotalWeight],]}
    });
];

Вы не можете поместить заявление внутрь [...] так же, как вы не можете использовать литерал объекта в этом контексте. Возможно, вы действительно хотите использовать _.map:

var NewCo2Data = _.map(groupedData, function(m) {
    return { label: wt.WT, data: [[m.Month, wt.TotalWeight]] };
});

_.map используется для преобразования данных из одного формата в другой, _.each просто перебирает коллекцию. У вас также была запятая в конце массива, некоторые движки JavaScript не будут об этом заботиться, а некоторые будут.

Другие вопросы по тегам