【问题标题】:Search for a particular field in a array object and put it in another array for displaying a table in angular在数组对象中搜索特定字段并将其放入另一个数组中,以便以角度显示表格
【发布时间】:2020-10-29 11:08:08
【问题描述】:

我是 Angular 的新手,我正在从服务器获取一个对象数组作为响应我需要搜索是否有任何数组具有相同的键值,然后将相应的数组元素值放入另一个数组中以将其显示在表中. 我的场景我将查询编号作为输入传递,例如:10002 我的询问回复包含以下详细信息 Inquirydocumentno、inquirydate、materialno、name of materialinquired 等, 我的实际反应是

[
{
InquiryDate: ["2015-03-04"]
InquiryType:["A"]
MaterialNo: ["30"]
Material Name: ["Chair"]
InquiryDocument No: ["0010000012"]
},
{
InquiryDate: ["2019-03-04"]
InquiryType:["A"]
MaterialNo: ["31"]
Material Name: ["Book"]
InquiryDocument No: ["0010000015"]
},
{
InquiryDate: ["2019-03-04"]
InquiryType:["A"]
MaterialNo: ["31"]
Material Name: ["Bag"]
InquiryDocument No: ["0010000015"]
},
{
InquiryDate: ["2015-05-19"]
InquiryType:["A"]
MaterialNo: ["34"]
Material Name: ["lamp"]
InquiryDocument No: ["0010000018"]
}
]

Here 在此响应中,查询日期和查询单据号、查询类型等详细信息固定为表头详细信息,需要显示为表头表,而物料编号和物料名称是项目详细信息,需要在单击时显示在另一个表中相应的查询文件不应该显示所有相关项目的详细信息。 例如: InquiryDocumentNo: 0010000015 在响应中出现两次我需要在标题表中显示一次,单击按钮详细信息时,它应该显示在另一个表中查询的 2 项(包,书)。 我正在尝试检查响应数组中的文档编号是否相同,并尝试将相应的项目详细信息推送到我的代码(appcomponent.ts)中的另一个数组中,但它做得正确,谁能帮我弄清楚以及如何做这个

inq =[];
for(var i=0;i<array.length;i++)
          {
            var element=array[i];
            for(var j=i+1;j<array.length;j++)
            {
              var elt =array[j];
              if(element.inquirydocno==elt.inquirydocno)
              {
                  this.inq.push(elt.Materialno);
                  this.inq.push(elt.Materialname);
                  
                  
              }
            }
            
          }
          console.log(this.inq);

我附上了一张我的输出应该如何显示的图片

【问题讨论】:

    标签: arrays angular typescript object


    【解决方案1】:

    我建议使用字典作为“详细信息表”。

    类似的东西

    export interface InquiryItem {
      materialNo: string[];
      materialName: string[];
    }
    
    inquiryItems: { [inquiryDocumentNo: string]: InquiryItem[] } = {};
    
    // Manual populating
    inquiryItems['001'] = [];
    inquiryItems['002'] = [];
    inquiryItems['001'].push({materialNo: '31', materialName: 'Book'});
    inquiryItems["001"].push({materialNo: '31', materialName: 'Bag'});
    inquiryItems["002"].push({materialNo: '30', materialName: 'Chair'});
    
    // From response array
    responseArray.forEach(entry => {
      const docNo = entry.InquiryDocumentNo;
      if(inquiryItems[docNo] === undefined)
        inquiryITems[docNo] = [];
    
      inquiryItems[docNo].push({
        materialNo: entry.Materialno;
        materialName: entry.Materialname;
      });
    })
    
    // Retrieval:
    docItems: InquiryItem[] = inquiryItems['0010000015'];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多