gpt4 book ai didi

javascript - 如何迭代对象数组并将每个对象显示到图表中?

转载 作者:行者123 更新时间:2023-12-01 00:43:55 25 4
gpt4 key购买 nike

我正在尝试使用 React 创建一个仪表板,第一部分是显示我的本地 API 数据。这是使用 ComponentDidMount 从前端获取的,并使用 splice 仅使用 METRIC = SPEND。我试图仅获取该数据的第一个对象,并使用 PRODUCT 和 UPLIFT 创建图表。 Google-charts 需要这样的数据 https://react-google-charts.com/bar-chart#basic-bar-chart-with-multiple-series

关于如何做到这一点有什么想法吗?我尝试过映射数组,但正如您在代码的最后部分中看到的那样,它循环遍历数组并创建三个图表,而不是将所有数据放入一个图表中。

我正在使用react-google-charts来创建我的图表。

  "error": false,
"data": [
{
"id": 1,
"METRIC": "Spend",
"PRODUCT": "Offer",
"EXPOSED": 62717.14,
"CONTROL": 56355.78,
"UPLIFT": 6361.36,
"PCT_UPLIFT": 0.11
},
{
"id": 2,
"METRIC": "Spend",
"PRODUCT": "Brand",
"EXPOSED": 1037739.72,
"CONTROL": 979580.56,
"UPLIFT": 58159.16,
"PCT_UPLIFT": 0.06
},
{
"id": 3,
"METRIC": "Spend",
"PRODUCT": "Aisle",
"EXPOSED": 4084428.18,
"CONTROL": 3880807.25,
"UPLIFT": 203620.93,
"PCT_UPLIFT": 0.05
},
{
"id": 4,
"METRIC": "Units",
"PRODUCT": "Offer",
"EXPOSED": 25117.02,
"CONTROL": 22537.94,
"UPLIFT": 2579.08,
"PCT_UPLIFT": 0.11
},
{
"id": 5,
"METRIC": "Units",
"PRODUCT": "Brand",
"EXPOSED": 506365.64,
"CONTROL": 479277.36,
"UPLIFT": 27088.28,
"PCT_UPLIFT": 0.06
},
{
"id": 6,
"METRIC": "Units",
"PRODUCT": "Aisle",
"EXPOSED": 1771305.29,
"CONTROL": 1682430.67,
"UPLIFT": 88874.62,
"PCT_UPLIFT": 0.05
},
{
"id": 7,
"METRIC": "Visits",
"PRODUCT": "Offer",
"EXPOSED": 22661.99,
"CONTROL": 20480.76,
"UPLIFT": 2181.23,
"PCT_UPLIFT": 0.11
},
{
"id": 8,
"METRIC": "Visits",
"PRODUCT": "Brand",
"EXPOSED": 413568.96,
"CONTROL": 391852.96,
"UPLIFT": 21716,
"PCT_UPLIFT": 0.06
},
{
"id": 9,
"METRIC": "Visits",
"PRODUCT": "Aisle",
"EXPOSED": 1220181.72,
"CONTROL": 1161775.92,
"UPLIFT": 58405.8,
"PCT_UPLIFT": 0.05
},
{
"id": 10,
"METRIC": "Total_custs",
"PRODUCT": "Offer",
"EXPOSED": 15827,
"CONTROL": 14346.53,
"UPLIFT": 1480.47,
"PCT_UPLIFT": 0.1
},
{
"id": 11,
"METRIC": "Total_custs",
"PRODUCT": "Brand",
"EXPOSED": 301593,
"CONTROL": 282900.38,
"UPLIFT": 18692.62,
"PCT_UPLIFT": 0.07
},
{
"id": 12,
"METRIC": "Total_custs",
"PRODUCT": "Aisle",
"EXPOSED": 795653,
"CONTROL": 749896.76,
"UPLIFT": 45756.24,
"PCT_UPLIFT": 0.06
}
],
"message": "top table"
}


import React from 'react';
import { Chart } from 'react-google-charts';
import './App.css';

class App extends React.Component {
constructor() {
super();
this.state = {
top_spend: []
}
}
componentDidMount() {
fetch('http://localhost:3000/top')
.then(response => response.json())
.then(data => {
this.setState({top_spend: data.data.splice(0,3)}, () => {
console.log("Top_Spend", this.state.top_spend);
})
})
}
render() {
let top = this.state.top_spend;

return (
<div className="App">
{top.map(function(name, index) {
return (
<div key={index}>
<Chart
height={'300px'}
width={'400px'}
chartType="Bar"
loader={<div>Loading Chart</div>}
data={[
['', 'UPLIFT', 'PCT_UPLIFT'],
[name.PRODUCT, name.UPLIFT, name.PCT_UPLIFT],
]}
options={{
chart: {
title: 'Company',
},
chartArea: {width: '50%'},
isStacked: true,
}}
/>
</div>
)
})}
</div>
);
}
}

export default App;

最佳答案

所以这里的问题是,您正在迭代数据,从而为每个条目制作一个图表,如果我理解正确的话,您想将其全部合并到一个图表中。因此,您不想直接迭代数据,而是希望迭代传递给 Chart 的 prop 中的数据。所以代码看起来像这样

<Chart
data={[
['', 'UPLIFT', 'PCT_UPLIFT'],
...data.map(d => [ d.PRODUCT, d.UPLIFT, d.PCT_UPLIFT ])
]}
/>

关于javascript - 如何迭代对象数组并将每个对象显示到图表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57532112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com