함수를 통과, 중첩 된 배열을 필터링/표현하지만, 전달 함수를 제공하지 않을 솔루션 _.filter한다 :Lodash - 내가 아래에 이러한 링크를 확인했습니다</p> <p>나는 필터링하고 특정 기준과 일치하는 중첩 배열만을 itens를 추출 할 수있는 방법을 찾을 수 없습니다
Find object by match property in nested array
lodash property search in array and in nested child arrays
Lodash - Search Nested Array and Return Object
그럼, 더 잘 설명하겠습니다. 현재 다음과 같은 데이터가 있습니다. 기준과 일치하는 모든 객체에 대해 "listEvents"배열 내부의 itens를 검색하려면 어떻게해야합니까?
[
{
"ModalidadeId": 1,
"Nome": "SOCCER",
"Ordem": "09",
"IconeId": "",
"listEvents": [
{
"EI": 2960542,
"No": "SÃO PAULO SP X ATLÉTICO LINENSE-SP",
"St": 1,
"Ini": "2017-09-30T10:00:00",
"MI": 1,
"CI": 251,
"TI": 4993,
"StAV": 0,
"De": false,
"Ics": [
"p22678",
"p22684"
],
"Ic": "",
"Tas": [],
"show": true,
"IniFormatada": "30/09/2017 às 10:00:00",
"MN": "FUTEBOL"
},
{
"EI": 3260915,
"No": "SÃO PAULO SP X ATLÉTICO LINENSE-SP",
"St": 0,
"Ini": "2017-09-30T10:00:00",
"MI": 1,
"CI": 251,
"TI": 4993,
"StAV": 0,
"De": false,
"Ics": [
"p29076",
"p22684"
],
"Ic": "",
"Tas": [],
"show": true,
"IniFormatada": "30/09/2017 às 10:00:00",
"MN": "FUTEBOL"
},
{
"EI": 430219,
"No": "NOROESTE SP X GREMIO NOVORIZONTINO SP",
"St": 0,
"Ini": "2017-09-30T15:00:00",
"MI": 1,
"CI": 251,
"TI": 2580,
"StAV": 0,
"De": false,
"Ics": [
"p31209",
"p31113"
],
"Ic": "",
"Tas": [],
"show": true,
"IniFormatada": "30/09/2017 às 15:00:00",
"MN": "FUTEBOL"
},
{
"EI": 443844,
"No": "COMERCIAL FC SP X BATATAIS FUTEBOL CLUBE SP",
"St": 0,
"Ini": "2017-09-30T15:00:00",
"MI": 1,
"CI": 251,
"TI": 2580,
"StAV": 0,
"De": false,
"Ics": [
"p31200",
"p31212"
],
"Ic": "",
"Tas": [],
"show": true,
"IniFormatada": "30/09/2017 às 15:00:00",
"MN": "FUTEBOL"
}
]
},
{
"ModalidadeId": 2,
"Nome": "TENIS",
"Ordem": "09",
"IconeId": "",
"listEvents": [
{
"EI": 2960542,
"No": "SÃO PAULO SP X ATLÉTICO LINENSE-SP",
"St": 1,
"Ini": "2017-09-30T10:00:00",
"MI": 1,
"CI": 251,
"TI": 4993,
"StAV": 0,
"De": false,
"Ics": [
"p22678",
"p22684"
],
"Ic": "",
"Tas": [],
"show": true,
"IniFormatada": "30/09/2017 às 10:00:00",
"MN": "FUTEBOL"
},
{
"EI": 3260915,
"No": "SÃO PAULO SP X ATLÉTICO LINENSE-SP",
"St": 0,
"Ini": "2017-09-30T10:00:00",
"MI": 1,
"CI": 251,
"TI": 4993,
"StAV": 0,
"De": false,
"Ics": [
"p29076",
"p22684"
],
"Ic": "",
"Tas": [],
"show": true,
"IniFormatada": "30/09/2017 às 10:00:00",
"MN": "FUTEBOL"
},
{
"EI": 430219,
"No": "NOROESTE SP X GREMIO NOVORIZONTINO SP",
"St": 0,
"Ini": "2017-09-30T15:00:00",
"MI": 1,
"CI": 251,
"TI": 2580,
"StAV": 0,
"De": false,
"Ics": [
"p31209",
"p31113"
],
"Ic": "",
"Tas": [],
"show": true,
"IniFormatada": "30/09/2017 às 15:00:00",
"MN": "FUTEBOL"
},
{
"EI": 443844,
"No": "COMERCIAL FC SP X BATATAIS FUTEBOL CLUBE SP",
"St": 0,
"Ini": "2017-09-30T15:00:00",
"MI": 1,
"CI": 251,
"TI": 2580,
"StAV": 0,
"De": false,
"Ics": [
"p31200",
"p31212"
],
"Ic": "",
"Tas": [],
"show": true,
"IniFormatada": "30/09/2017 às 15:00:00",
"MN": "FUTEBOL"
}
]
}
]
이것은 지금까지 시도한 코드이지만 작동하지 않는 코드입니다.
_.filter($scope.listModalities, _.flow(
_.property('listEvents'),
_.partialRight(_.filter, function (o) {
var eventDate = new Date(o.Ini);
eventDate.setHours(eventDate.getHours() - 24);
var now = new Date();
return o.De == true || eventDate < now;
})
));
이의 예를 제공 자바 스크립트 방법 : 코멘트에 제안 된대로
또한, 당신은
flatMap
또 다른 단계를 절약 할 수 있습니다 기준 및 그 기준을 사용한 필터링 후의 출력. –중첩 된 객체 만있는 결과가 필요하거나 부모 객체를 갖기 위해 결과가 필요합니까? 샘플 출력은 큰 도움이 될 것입니다 – user93