Javascript 如何筛选typescript中的嵌套数组?
我有一个JSON,如下所示Javascript 如何筛选typescript中的嵌套数组?,javascript,node.js,arrays,typescript,filter,Javascript,Node.js,Arrays,Typescript,Filter,我有一个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",
{
"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"
}
]
}
}
我想筛选与行匹配的数组。行[someindex].ColData[1]。id==567
。这里的id
应该与ColData数组的second
对象匹配
但是在过滤之后,我不想从结果数组中跳过那些具有摘要
作为行的记录。行[someindex]。摘要。摘要记录应包含在生成的数组中
我尝试了下面的代码,但它不起作用,因为在行中,行数组摘要可以在某些索引处代替ColData
&而且我希望在结果数组中包括摘要
记录,即使我找到了所需的对象
function getResult(filterbY, objList) {
return objList.Rows.Row.filter(function(obj) {
return obj.ColData.some(function(item){
return item.id == filterbY;
});
});
}
请提供相同的帮助?您需要在筛选函数中包含您的摘要
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;
});
});
}
您能提供getResult函数的预期输出吗?您使用的是typescript,对吗<代码>x??y
基本上是指x!=无效的x:y代码>它是在typescript 3.7中引入的,但我想在结果数组中包含所有摘要对象,无论id是否匹配。所以只有coldata对象被过滤,剩下的被包括在内。感谢这看起来更好,但是我可以得到json结构,因为从现在开始传递原始json头,列部分被跳过。如何返回重新构造的json?因为您返回的是已过滤的行,所以您需要对要获取对象结果的对象应用筛选器,因此它应该是objList.rows.row.filter,而不是objList.filter