【发布时间】:2018-08-17 07:57:49
【问题描述】:
我想要实现的是拥有这种结构类型:
let chartDataSets: Array<ChartDataSets> = new Array<ChartDataSets>();
chartDataSets = [
{
backgroundColor: "#29b6f6",
borderColor: "#0086c3",
pointHoverBorderColor: "#0086c3",
pointHoverBackgroundColor: "#73e8ff",
pointRadius: 3.5,
fill: false
},
{
backgroundColor: "#f44336",
borderColor: "#ba000d",
pointHoverBorderColor: "#ba000d",
pointHoverBackgroundColor: "#ff7961",
pointRadius: 3.5,
fill: false
}
]
通过这样做:
data.forEach(element => {
chartDataSets.push(this.buildDatasets(element, timeSpan));
});
otherData.forEach(otherElement => {
chartDataSets.push(this.buildDatasets(otherElement, timeSpan));
});
我必须这样做,因为我不知道数组会有多少对象。所以我需要遍历从服务返回的数据,以便知道数组中有多少对象。 但是我用 push 命令实现的是只生成一个对象的数组,而不是将 ChartDataSets 的多个对象生成到数组中。
这里是接口声明:
export interface ServiceResponse {
Date: Date;
Amount: number;
Precision: number;
}
export interface ChartDatasets {
data: ChartPoint[],
backgroundColor: string,
borderColor: string,
pointHoverBorderColor: string,
pointHoverBackgroundColor: string,
pointRadius: number,
fill: boolean
}
export interface ChartPoint {
x: number | string | Date
y: number
}
方法buildChartDatasets声明:
protected buildDatasets(element: EacSubmissionResponseModel, timeSpan: TimeSpan = TimeSpan.Day): ChartDataSets {
let chartDataset: ChartDataSets = {};
let chartResponse: ChartPoint[] = [{
x: element.Date,
y: element.Amount
}]
chartDataset.data = chartResponse;
return chartDataset;
}
这是我得到的响应,显示在 chrome 开发者工具中:
第一个是想要的结果,第二个是我实际得到的。 希望这已经足够清楚了。
【问题讨论】:
-
你能告诉我们
ChartDataSets类型的声明吗? -
是的,您能否提供有关您的
this.buildDatasets方法的类型和详细信息。此外,您可以使用类似这样的语法来稍微清理一下const chartDataSets = data.concat(otherData).map(e => this.buildDatasets(e, timeSpan)); -
ChartDatasets 包含您在第一个示例中看到的所有属性。只是为了进行类型检查。 Buildchartdatasets 方法 映射服务返回的部分实体
标签: javascript arrays angular typescript