【问题标题】:How to turn an [object Object] into an array?如何将 [object Object] 变成数组?
【发布时间】:2016-11-23 18:16:14
【问题描述】:

我正在将 API 调用中的一些值显示到 ngFor 指令中。我正在尝试将数据转换为数组。这是我从服务器得到的:

Data from the server

我这样订阅数据:

 onVideoClick(video_id) {
    this._dashboardService.getVideoData(video_id)
      .subscribe(videoData => {
        if (videoData.ok) {
          console.log(videoData.json());
          this.videoData = videoData.json();
        } else {
          console.log('pas de données vidéos');
        }
      });
  }

我以这种方式显示我的数据:

     <tr>
        <th *ngFor="let vD of videoData">{{vD.attr_libelle}}</th>
     </tr>

如何把这个Object变成一个数组?

【问题讨论】:

  • 请将 JSON 添加为文本,而不是屏幕截图。
  • 您需要指定要转换的对象。

标签: arrays object angular ngfor


【解决方案1】:

我将使用 Lodash 库进行此转换。

onVideoClick(video_id) {
    this._dashboardService.getVideoData(video_id)
      .subscribe(videoData => {
        if (videoData.ok) {
          console.log(videoData.json());
          this.videoData = _.values(videoData.json());
        } else {
          console.log('pas de données vidéos');
        }
      });
  }

有关文档,请参阅here

【讨论】:

    【解决方案2】:

    您可以为此实现自定义管道。这是一个从对象条目创建数组的示例:

    @Pipe({name: 'keys'})
    export class KeysPipe implements PipeTransform {
      transform(value, args:string[]) : any {
        let keys = [];
        for (let key in value) {
          keys.push({key: key, value: value[key]);
        }
        return keys;
      }
    }
    

    并像这样使用它:

    <span *ngFor="#entry of content">           
      Key: {{entry.key}}, value: {{entry.value}}
    </span>
    

    不要忘记将管道添加到要使用它的组件的pipes 属性中。

    【讨论】:

    • 我如何自定义这个管道来将一个复杂的对象解析为一个对象到一个对象到一个对象?
    • 您希望输出对象采用哪种结构?
    猜你喜欢
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    相关资源
    最近更新 更多