Перебор массива для отображения нескольких диаграмм

#javascript #arrays #reactjs #arraylist #charts

#javascript #массивы #reactjs #arraylist #Диаграммы

Вопрос:

Я создаю веб-приложение в react, которое отображает данные на основе экономических, социальных и политических показателей. Поскольку данные слишком велики для отображения на одной диаграмме (кошмар для мобильного пользовательского интерфейса), я решил разделить данные на 4 объекта в массиве. Я пытаюсь найти способ перебирать этот массив. Вот код

 import React from 'react';
import { Bar } from 'react-chartjs-2';
import ChartDataSource from 'chartjs-plugin-datasource';

const config = {
    data: {
        datasets: [
            {
                backgroundColor: 'rgba(255,99,132,0.2)',
                borderColor: 'rgba(255,99,132,1)',
                borderWidth: 1,
                hoverBackgroundColor: 'rgba(255,99,132,0.4)',
                hoverBorderColor: 'rgba(255,99,132,1)',
            },
        ],
    },

    options: {
        maintainAspectRatio: true,
        plugins: {
            datasource: {
                type: 'sheet',
                url: 'GDP1.xlsx', {/*<----- This is where the array gets looped*/}
                rowMapping: 'index',
            },
        },
        title: {
            display: true,
            text: 'GDP per country',
        },
        scales: {
            xAxes: [
                {
                    scaleLabel: {
                        display: true,
                        labelString: 'Countries',
                    },
                },
            ],
            yAxes: [
                {
                    id: '2018',
                    gridLines: {
                        drawOnChartArea: false,
                    },
                    scaleLabel: {
                        display: true,
                        labelString: 'GDP',
                    },
                },
            ],
        },
    },
};

function BarChart() {
    const graphslist = [ {/* Ths is the array i want to loop through*/}
        { url: 'GDP1.xlsx' },
        { url: 'GDP2.xlsx' },
        { url: 'GDP3.xlsx' },
        { url: 'GDP4.xlsx' },
    ];
    return (
        <div>
            <h2>GDP per country</h2>
            <Bar
                data={config.data}
                options={config.options}
                width={100}
                height={100}
                plugins={[ChartDataSource]}
            />
        </div>
    );
}

export default BarChart;
  

Я пытался использовать функцию .map, поэтому config.options.Плагины.url перебирает 4 объекта в массиве, поэтому отображаются 4 диаграммы, но я продолжаю получать неожиданный токен. Любая помощь приветствуется

Ответ №1:

вы можете попробовать это без плагинов.

 const theDatasets= (()=>{
let arr = []
      for (let i = 0; i < graphslist .length; i  ) {

          arr.push(
            {
              data: graphslist [i],
              backgroundColor: 'rgba(255,99,132,0.2)',
            borderColor: 'rgba(255,99,132,1)',
            borderWidth: 1,
            hoverBackgroundColor: 'rgba(255,99,132,0.4)',
            hoverBorderColor: 'rgba(255,99,132,1)',
              label: graphslist [i],
                   
            }
          )
        }
      
      return arr
})()
  

при рендеринге

 <Bar
                data={theDatasets}
                options={config.options} // your option without plugins
                width={100}
                height={100}
                
            />