[英]Array.filter is not returning the expected output
我有一個嵌套的數據數組。 我可以根據自己的條件獲取第一組數據,但是當我在此結果集上應用Array.filter
時,它並沒有給我預期的結果。
{
"data": [
{
"Date": "02/04/2019",
"Total": "1000",
"Success": "850",
"Failure": "150",
"FailureDeatils": [
{
"name": "Reason1",
"Count": 2,
"Description": [
{
"DescriptionID": "01",
"Status": "Failure Point1"
},
{
"DescriptionID": "01",
"Status": "Failure Point1"
}
]
},
{
"name": "Reason2",
"Count": 6,
"Description": [
{
"DescriptionID": "01",
"Status": "Failure Point1"
},
{
"DescriptionID": "01",
"Status": "Failure Point1"
}
]
}
]
},
{
"Date": "03/04/2019",
"Total": "800",
"Success": "750",
"Failure": "150",
"FailureDeatils": [
{
"name": "Reason1",
"Count": 3,
"Description": [
{
"DescriptionID": "01",
"Status": "Failure Point1"
},
{
"DescriptionID": "01",
"Status": "Failure Point1"
}
]
},
{
"name": "Reason2",
"Count": 1,
"Description": [
{
"DescriptionID": "01",
"Status": "Failure Point1"
},
{
"DescriptionID": "01",
"Status": "Failure Point1"
}
]
}
]
}
]
}
首先,我應用了下面的Array.filter
來基於日期獲取FailureDetails:
var filtered = data
.filter(value => value.Date == "02/04/2019")
.map(e => e.FailureDeatils);
這將導致以下輸出:
FailureDeatils:[{"name":"Reason1","Count":2,"Description":[{"DescriptionID": "01","Status": "Failure Point1"},{"DescriptionID": "01","Status": "Failure Point1"}]},{"name":"Reason2","Count":6,"Description":[{"DescriptionID": "01","Status": "Failure Point1"},{"DescriptionID": "01","Status": "Failure Point1"}]}]
現在基於Reason,即Reason1或Reason 2,我想要獲得描述。 但是當我在其上應用Array.filter
時,它將返回未定義的輸出。
我要去哪里錯了?
您可以在過濾后的數組上應用過濾器以獲取結果,但是由於它是一個數組的數組,因此您也需要在過濾后的數組上進行映射。
但是,您可以簡單地使用reducer展平初始FailureDescription數組,而不是對其進行映射。
var data = [ { "Date": "02/04/2019", "Total": "1000", "Success": "850", "Failure": "150", "FailureDeatils": [ { "name": "Reason1", "Count": 2, "Description": [ { "DescriptionID": "01", "Status": "Failure Point1" }, { "DescriptionID": "01", "Status": "Failure Point1" } ] }, { "name": "Reason2", "Count": 6, "Description": [ { "DescriptionID": "01", "Status": "Failure Point1" }, { "DescriptionID": "01", "Status": "Failure Point1" } ] } ] }, { "Date": "03/04/2019", "Total": "800", "Success": "750", "Failure": "150", "FailureDeatils": [ { "name": "Reason1", "Count": 3, "Description": [ { "DescriptionID": "01", "Status": "Failure Point1" }, { "DescriptionID": "01", "Status": "Failure Point1" } ] }, { "name": "Reason2", "Count": 1, "Description": [ { "DescriptionID": "01", "Status": "Failure Point1" }, { "DescriptionID": "01", "Status": "Failure Point1" } ] } ] } ] var filtered = data .filter(value => value.Date == "02/04/2019") .reduce((acc,e) => acc.concat(e.FailureDeatils), []); const reason = "Reason1"; var res = filtered.filter((data) => data.name == reason).reduce((acc, item) =>{ acc = acc.concat(item.Description); return acc; }, []); console.log(res);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.