2017-10-24 7 views
0

중첩 된 데이터에 특정 값이있는 경우 객체 배열에서 객체를 제거하려고합니다. 이 API에서 반환되는RamDA는 중첩 된 값을 기반으로 배열에서 객체를 제거합니다.

데이터는이 모양입니다 :

Array [ 
    Object { 
    "id": "/db/Shifts/123", 
    "applicants": Object { 
     "applicants": Array [ 
     "/db/User/12", 
     "/db/User/13", 
     ], 
    }, 
    Object { 
    "id": "/db/Shifts/456", 
    "applicants": Object { 
     "applicants": Array [ 
     "/db/User/12", 
     "/db/User/14", 
     ], 
    }, 
    Object { 
    "id": "/db/Shifts/789", 
    "applicants": Object { 
     "applicants": Array [ 
     "/db/User/13", 
     "/db/User/14", 
     ], 
    }, 
] 

하는 사용자 (12)는 지원자에 위치 할 것이다 지원자의 배열에 존재하는 나는 변화를 필터링 할 방법 Ramda 사용. 지원자.

이 경우 데이터를 병합 할 수 없으며 각 교대시 지원자 목록은 개체에 포함 된 배열이어야합니다. 내가 배열에 들어가 그것을 한 번 더 기능을 공급해야처럼 먹이,

var hasApplied = pathEq(['applicants', 'applicants'], 'db/User/12'); 
console.log(filter(hasApplied, shifts)); 

하지만 applicants.applicants 배열이기 때문에 그것은 매우 옳다고 생각하지 않는다 :

나는이 시도 지원자의 그러나 나는 무엇이 확실하지 않다.

답변

1

R.pathEq을 사용하면 각 배열에 제공된 ID가 들어 있는지 확인하는 대신 사용자 ID가 각 ID 배열과 동일한 지 비교하는 결과가 발생합니다.

대신과 함께 R.pathSatisfies의 사용을 만들 수 R.contains

const hasApplied = R.pathSatisfies(R.contains('/db/User/12'), ['applicants', 'applicants'])