【问题标题】:Angular - How can i transform an Object into an ArrayAngular - 我如何将对象转换为数组
【发布时间】:2020-07-31 09:12:25
【问题描述】:

我正在制作 ChartJS 库的折线图。 我有这个对象,我想将它转换成一个数组,因为我想在它上面使用它的数据。 在网上搜索我发现 map 是最简单的方法,但我实际上不能在 Object 上使用它,而只能在数组上使用它。如何将其转换为数组或仅使用折线图上的 json 数据?这就是我现在拥有的 json 对象。

{labels: Array(2), values: Array(2)}
labels: (2) ["sales-be", "sales-mw"]
values: (2) [48, 8]

我试过这样,但它给了我错误:

var labels = this.errorsList.map(function (e) {
      return e.labels;
    });

    var datas = this.errorsList.map(function (e) {
      return e.values;
    });

TypeError:this.errorsList.map 不是函数

【问题讨论】:

  • 所以你想让标签数组保存字符串而值数组保存整数?
  • 你能发帖errorsList吗?
  • 你能用预期的数组结构更新你的问题吗
  • 属性已经是数组了。您可以直接访问它们var labels = this.errorsList.labelsvar datas = this.errorsList.values
  • 如果我理解正确 errorsList 是一个对象,而 map 不是一个可枚举的对象,您可以使用 for..in 循环遍历一个对象。正如其他评论员指出的那样,这些值似乎是数组,因此您可以通过点符号直接访问它们,而无需执行任何其他操作。

标签: javascript arrays angular typescript object


【解决方案1】:

属性已经是数组。所以你可以直接访问它们。

试试下面的

export class AppComponent {
  errorsList = {
    labels: ["sales-be", "sales-mw"],
    values: [48, 8]
  };

  ngOnInit() {
    this.chartData = [{
      data: this.errorsList.values,
      label: 'Sales',
      fill: false
    }];

    this.chartLabels = this.errorsList.labels;

    this.chartColors = [{
      backgroundColor: 'rgba(0, 0, 0, 0)',
      borderColor: 'rgba(255, 15, 15, 1)'
    }];
  };
}

模板

<div id="chart-container">
    <canvas #myCanvas id="canvas" baseChart [chartType]="chartType" [datasets]="chartData" [labels]="chartLabels" [colors]="chartColors" [options]="chartOptions"></canvas>
</div>

工作示例:Stackblitz

这里errorsList 是用硬值定义的,用于说明。您不必在代码中定义它。

同样,此代码是一个示例,它只是为了说明如何使用对象的属性,仅此而已。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-17
    • 2021-05-23
    • 2022-07-09
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    相关资源
    最近更新 更多