Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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 访问React中的嵌套JSON对象_Javascript_Arrays_Json_Reactjs - Fatal编程技术网

Javascript 访问React中的嵌套JSON对象

Javascript 访问React中的嵌套JSON对象,javascript,arrays,json,reactjs,Javascript,Arrays,Json,Reactjs,数据集: 我是新的反应,并试图让我的脚湿与新冠病毒-19跟踪,所以容忍我。。。我试图从上述数据集中访问Timeline>案例,但似乎无法使其正常工作。我已经尝试了让date在data.timeline.cases中,但是这也不起作用。也许我找错地方了——找些指导。谢谢 const buildChartData = (data, casesType) => { let chartData = []; let lastDataPoint; for (let date in dat

数据集:

我是新的反应,并试图让我的脚湿与新冠病毒-19跟踪,所以容忍我。。。我试图从上述数据集中访问Timeline>案例,但似乎无法使其正常工作。我已经尝试了
让date在data.timeline.cases中,但是这也不起作用。也许我找错地方了——找些指导。谢谢

const buildChartData = (data, casesType) => {
  let chartData = [];
  let lastDataPoint;

  for (let date in data.cases) {
    if (lastDataPoint) {
      let newDataPoint = {
        x: date,
        y: data[casesType][date] - lastDataPoint,
      }
      chartData.push(newDataPoint);
    }
    lastDataPoint = data[casesType][date];
  }
  return chartData;
};

function LineGraph({ casesType = 'cases' }) {
  const [data, setData] = useState({});

  useEffect(() => {
    const fetchData = async() => {
      await fetch('https://disease.sh/v3/covid-19/historical/usa?lastdays=120')
        .then((response) => {
          return response.json()
        })
        .then(data => {
          let chartData = buildChartData(data, casesType);
          setData(chartData);
        });
    };
    
    fetchData();
  }, [casesType]);

好的,正如您所说的,您尝试了
将date放入data.timeline.cases
但是您也需要更改代码的其他部分

它不是
data[casesType]
而是
data.timeline[casesType]

  for (let date in data.timeline.cases) {
    if (lastDataPoint) {
      let newDataPoint = {
        x: date,
        y: data.timeline[casesType][date] - lastDataPoint,
      }
      chartData.push(newDataPoint);
    }
    lastDataPoint = data.timeline[casesType][date];
  }

好的,正如您所说的,您尝试了
将date放入data.timeline.cases
但是您也需要更改代码的其他部分

它不是
data[casesType]
而是
data.timeline[casesType]

  for (let date in data.timeline.cases) {
    if (lastDataPoint) {
      let newDataPoint = {
        x: date,
        y: data.timeline[casesType][date] - lastDataPoint,
      }
      chartData.push(newDataPoint);
    }
    lastDataPoint = data.timeline[casesType][date];
  }

非常感谢@Apostolos非常感谢@Apostolos