javascript - 将一组数据拆分为单独的数组
问题描述
我正在尝试将数据挂钩到顶点图表
<apexchart
type="area"
height="350"
:options="chartOptions"
:series="series">
</apexchart>
我有一个数据数组,但是要绘制图表,我需要将其拆分为 3 个不同的数组来绘制图表,但我不知道如何使用 JS
我从 api 得到一个这样的数组
dataOverview = [
{
"id": 1,
"successfullySyngranized": 1,
"unsuccessfullySynchronized": 5,
"timeStamp": "2020-11-01T00:00:00"
},
{
"id": 2,
"successfullySyngranized": 2,
"unsuccessfullySynchronized": 4,
"timeStamp": "2020-11-02T00:00:00"
},
{
"id": 3,
"successfullySyngranized": 3,
"unsuccessfullySynchronized": 3,
"timeStamp": "2020-11-03T00:00:00"
},
{
"id": 4,
"successfullySyngranized": 4,
"unsuccessfullySynchronized": 2,
"timeStamp": "2020-11-04T00:00:00"
},
{
"id": 5,
"successfullySyngranized": 5,
"unsuccessfullySynchronized": 1,
"timeStamp": "2020-11-05T00:00:00"
}];
结果,我需要得到这样的数组
var series = [];
var timeStamp = [];
并将它们插入图表设置
data() {
return {
dataOverview: [],
series: [] // insert series objects,
chartOptions: {
//...
// some options
//...
xaxis: {
type: "datetime",
categories: [ // insert timeStamp array
// "2020-11-01T00:00:00",
// "2020-11-02T00:00:00",
// "2020-11-03T00:00:00",
// "2020-11-04T00:00:00",
// "2020-11-05T00:00:00"
]
},
//...
// some options
//...
}
}
}
beforeMount() {
this.onGetDataOverview();
},
methods: {
onGetDataOverview() {
this.$axios
.$get(
this.$store.getters["store/getApiPath"] + "/Analyst/GetOverviewData"
)
.then(response => {
this.dataOverview = response;
const seriesOne = this.dataOverview.map(
({ successfullySyngranized }) => successfullySyngranized
);
const seriesTwo = this.dataOverview.map(
({ unsuccessfullySynchronized }) => unsuccessfullySynchronized
);
const series2 = [
{ name: "series1", data: seriesOne },
{ name: "series2", data: seriesTwo }
];
this.series = series2;
//Here I am trying to insert time data, however the graph does not start
let xaxis = {
...this.chartOptions.xaxis,
categories: this.dataOverview.map(({ timeStamp }) => timeStamp)
};
this.chartOptions = { ...this.chartOptions, ...{ xaxis: xaxis } };
})
插入时间数据时 - 未构建图表,但是如果我在变量声明中明确指出时间 - 构建图表
但我还需要进行跟踪,以便在收到新数据时图形移动,即使用计算
解决方案
这很简单,您只需使用.map
var series1 = dataOverview.map(x => x.series1);
var series2 = dataOverview.map(x => x.series2);
var categories = dataOverview.map(x => x.timestamp);
推荐阅读
- rxjs - rxjs 重试延迟和多播
- javascript - 内容安全策略错误
- electron - 将自定义脚本注入外部 Electron 应用程序的创造性破解
- asynchronous - Google Apps 脚本网络应用程序未按预期异步运行
- ruby - 使用“each do”输出列表,如何跳过最后一个逗号?
- python - 创建虚拟变量和数据整理
- javascript - 带有 useReducer 和 MongoDB 的待办事项列表 - 错误:“todo.map 不是函数”
- r - 在 R 中更改 MCA 的文本标签颜色
- python - 在 QTableWidgetItem 中设置 mousePressEvent 处理程序
- laravel - 传递 navbar id 来存储其他控制器的功能