簡體   English   中英

如何過濾typescript中的嵌套數組?

[英]How to filter nested array in typescript?

我有一個 JSON 如下

{
  "Header": {
    "Time": "2020-06-09T07:03:20-07:00",
    "ReportName": "JournalReport",
    "StartPeriod": "2020-06-09",
    "EndPeriod": "2020-06-09",
    "Currency": "USD",
    "Option": [
      {
        "Name": "NoReportData",
        "Value": "false"
      }
    ]
  },
  "Columns": {
    "Column": [
      {
        "ColTitle": "Date",
        "ColType": "Date",
        "MetaData": [
          {
            "Name": "ColKey",
            "Value": "tx_date"
          }
        ]
      },
      {
        "ColTitle": "Transaction Type",
        "ColType": "String",
        "MetaData": [
          {
            "Name": "ColKey",
            "Value": "txn_type"
          }
        ]
      },
      {
        "ColTitle": "Num",
        "ColType": "String",
        "MetaData": [
          {
            "Name": "ColKey",
            "Value": "doc_num"
          }
        ]
      },
      {
        "ColTitle": "Name",
        "ColType": "String",
        "MetaData": [
          {
            "Name": "ColKey",
            "Value": "name"
          }
        ]
      },
      {
        "ColTitle": "Memo/Description",
        "ColType": "String",
        "MetaData": [
          {
            "Name": "ColKey",
            "Value": "memo"
          }
        ]
      },
      {
        "ColTitle": "Account",
        "ColType": "String",
        "MetaData": [
          {
            "Name": "ColKey",
            "Value": "account_name"
          }
        ]
      },
      {
        "ColTitle": "Debit",
        "ColType": "Money",
        "MetaData": [
          {
            "Name": "ColKey",
            "Value": "debt_home_amt"
          }
        ]
      },
      {
        "ColTitle": "Credit",
        "ColType": "Money",
        "MetaData": [
          {
            "Name": "ColKey",
            "Value": "credit_home_amt"
          }
        ]
      }
    ]
  },
  "Rows": {
    "Row": [
      {
        "ColData": [
          {
            "value": "0-00-00"
          },
          {
            "value": "",
            "id": "559"
          },
          {
            "value": ""
          },
          {
            "value": "",
            "id": ""
          },
          {
            "value": ""
          },
          {
            "value": "California Department of Tax and Fee Administration Payable",
            "id": "678"
          },
          {
            "value": ""
          },
          {
            "value": "1.25"
          }
        ],
        "type": "Data"
      },
      {
        "ColData": [
          {
            "value": "0-00-00"
          },
          {
            "value": "",
            "id": "559"
          },
          {
            "value": ""
          },
          {
            "value": "",
            "id": ""
          },
          {
            "value": ""
          },
          {
            "value": "California Department of Tax and Fee Administration Payable",
            "id": "678"
          },
          {
            "value": ""
          },
          {
            "value": ".10"
          }
        ],
        "type": "Data"
      },
      {
        "Summary": {
          "ColData": [
            {
              "value": ""
            },
            {
              "value": ""
            },
            {
              "value": ""
            },
            {
              "value": ""
            },
            {
              "value": ""
            },
            {
              "value": ""
            },
            {
              "value": "31.75"
            },
            {
              "value": "31.75"
            }
          ]
        },
        "type": "Section"
      },
      {
        "ColData": [
          {
            "value": "0-00-00"
          },
          {
            "value": "",
            "id": "567"
          },
          {
            "value": ""
          },
          {
            "value": "",
            "id": ""
          },
          {
            "value": ""
          },
          {
            "value": "Accounts Payable (A/P)",
            "id": "676"
          },
          {
            "value": "232.00"
          },
          {
            "value": ""
          }
        ],
        "type": "Data"
      }
    ]
  }
}

我想過濾這個匹配Rows.Row[someindex].ColData[1].id == 567的數組。 這里的id應該與 ColData 數組的second object 匹配。

但是在過濾之后我不想跳過結果數組中那些具有Summary as Rows.Row[someindex].Summary的記錄。 匯總記錄應包含在結果數組中。

我嘗試了下面的代碼,但它不起作用,因為在Row.Row數組Summary中可以在某些索引處代替ColData並且我還想在結果數組中包含Summary記錄,即使我找到了所需的 object。

function getResult(filterbY, objList) {
  return objList.Rows.Row.filter(function(obj) {
   return obj.ColData.some(function(item){
     return item.id == filterbY;
   });
 });
}

請幫助相同?

您需要在過濾器 function 中包含您的摘要,然后,

function getResult(filterbY, objList) {
  return objList.Rows.Row.filter(function(obj) {
   if(obj.Summary){return true;}
   return obj.ColData.some(function(item){
     return item.id == filterbY;
   });
 });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM