【问题标题】:Correct way of displaying nested array object - issue with sorting an array显示嵌套数组对象的正确方法 - 数组排序问题
【发布时间】:2019-11-10 23:54:15
【问题描述】:

我有一组 Web API 2.2 获取的数据。它存储在对象类型的 Angular 数组中。该对象已声明用于存储另一个数组的字段。

简单地说,主要对象是客户端类型,它具有名称、姓氏等属性,还具有分配给该客户端的合同集合。

这就是类.ts:

export interface Client {
  Id: number;
  name: string;
  surname: string;
  Contracts: any;
}

我设法在表中显示所有数据,从表中获取一个用户,但我正在努力按以下方式对这组客户端进行排序:

如果我选择/键入 - 随便什么 - 一些合同属性(比如说 ContractId),我只想接收至少获得一份带有 ContractID 的合同的客户。

好的,但对我来说似乎不太直观的是以下内容。

我访问我的客户数组,声明为clients: Array<Client> = [];
控制台中的输出很清晰,我看到了对象,以及它的所有字段,包括合同。

但是当我尝试访问 this.clients[i](当然是在循环中)甚至 this.clients[0].Contracts 时,我得到了未定义。

到目前为止,我已经尝试将 Contracts 更改为 ['Contracts'],或者之前添加 [0],但似乎没有任何效果。

以下代码:

for (var i = 0; i < this.clients.length; i++) {
      console.log(this.clients[i]);
      console.log(this.clients[i].Contracts);
      for (var j = 0; j < this.clients[i].Contracts.length; j++) {
        console.log(this.clients[i].Contracts[j]);
      }

    }

生成输出(未定义的错误):

【问题讨论】:

    标签: javascript angular typescript


    【解决方案1】:

    在输出日志中,您有contracts 字段,而不是Contracts(小c

    【讨论】:

      【解决方案2】:

      更改代码段

      for (var i = 0; i < this.clients.length; i++) {
            console.log(this.clients[i]);
            console.log(this.clients[i].Contracts);
            for (var j = 0; j < this.clients[i].Contracts.length; j++) {
              console.log(this.clients[i].Contracts[j]);
            }
      
          }
      

      for (var i = 0; i < this.clients.length; i++) {
            console.log(this.clients[i]);
            console.log(this.clients[i].Contracts);
            for (var j = 0; j < this.clients[i].contracts.length; j++) {
              console.log(this.clients[i].contracts[j]);
            }
      
          }
      

      你可以使用for-each循环会更好

       for (let client of this.clients) {
            console.log(clients);
            console.log(client.contracts);
            for (let contact of client.contracts) {
                console.log(contact); 
           }
      }
      

      希望这会有所帮助..!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-21
        • 1970-01-01
        • 2021-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多