如何将数组的列从数组传递到“对象”字段

时间:2019-06-04 10:08:22

标签: javascript angular typescript

下面是我的代码,我试图将值从“ dataList”传递给this.data对象“ labels”,“ datasets”-> data;

但是如果创建一个变量并存储值然后将其传递给标签,数据,我将得到不确定的结果。

这是我的问题是如何设置标签的值,即dataList数组中的数据。

    this.dataList = [['lable1', 200], ['lable2', 300], ['lable3', 500]];
  

///现在我要访问所有标签来标记,所有数字都访问数据   下面而不是静态数据,我想从dataList中放入数据

    this.data = {
    labels: ['label1', label2, labels3],
    datasets: [
      {
        data: [200, 300, 500],
        backgroundColor: [
          "#FF6384",
          "#36A2EB",
          "#FFCE56"
        ],
        hoverBackgroundColor: [
          "#FF6384",
          "#36A2EB",
          "#FFCE56"
        ]
      }]
  };

我要在标签中放置动态数据,而不是标签中的静态值。

3 个答案:

答案 0 :(得分:1)

您只需使用JavaScript的Reduce函数即可开始工作。

  

Stackblitz DEMO-您可以编辑style.css变量以查看动态变化的输出

this.dataList

答案 1 :(得分:0)

如果您想让labelsdataList具有相同的元素:

labels: dataList,

如果要避免突变:

labels: dataList.slice(),

或者:

labels: [...dataList],

答案 2 :(得分:0)

您必须将代码放入.subscribe()功能块中,因为它是异步的,您将需要等待数据返回。然后,只需分配给变量标签和数据集即可。我在这里使用过es6,但是您不需要。

dataList: Array<any> = [];
data: any = {}; //give data an inital value
searchCond: SearchConditions;

constructor(private apiService: ApiService) {

this.searchCond = new SearchConditions();
this.searchCond.eventType = "encounterType";

this.apiService.getEncounterDashBoard(this.searchCond)
  .subscribe(data => {
    this.dataList = data.result;
    let [labels, datasets] = this.dataList; 
    this.data = {
      labels: labels,
      datasets: datasets,
    };
  });