我有一个嵌套的数据数组,我能够根据我的条件获得第一组数据,但是当我在这个结果集上应用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 => data.Date == "02/04/2019")
.map(e => e.FailureDeatils);这给了我失败的详细信息和描述,但现在在原因Id上,我想要获取描述,但它不起作用,并返回结果为“未定义”
有没有人能指出我哪里错了?
发布于 2019-04-24 21:25:45
您需要执行value.Date而不是data.Date,因为value引用了data数组中的每个对象:
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")
.map(e => e.FailureDeatils);
console.log(filtered);
发布于 2019-04-24 21:25:27
看来你说的是value.Date而不是data.Date。
.filter(value => value.Date == "02/04/2019")发布于 2019-04-24 21:34:47
你在筛选器中写错了变量:
应该是:
const filtered = data.filter(value => value.Date == "02/04/2019").map(e => e.FailureDeatils);
和not:
const filtered = data.filter(value => data.Date == "02/04/2019").map(e => e.FailureDeatils);
下面是基于您的代码的工作示例:
const object = {
"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"
}
]
}
]
}
]
}
const filtered = object.data.filter(value => value.Date == "02/04/2019").map(e => e.FailureDeatils);
console.log(filtered);
https://stackoverflow.com/questions/55831103
复制相似问题