조건부로 다른 어레이에 대해 어레이 필터링
문제 설명
문자열 배열을
query
로, 또 다른 문자열 배열을 target
로 취하는 함수를 빌드해야 합니다. 이 함수는 target
의 항목으로 시작하는 query
의 해당 문자열이 포함된 배열을 반환해야 합니다.예를 살펴보겠습니다.
query
가["pen", "paper"]
및
target
는["pen", "pencil", "paper", "", "books", "paperback"]
결과는
["pen", "pencil", "paper", "paperback"]
해결책
먼저 최종 솔루션을 살펴본 다음 분석해 보겠습니다.
우리의 textStartsWith
함수는 query
를 인수로 취하고 target
를 받아들이고 결과를 반환하는 다른 함수를 반환합니다.
파이프 기능을 살펴보면 더 재미있어집니다
const textStartsWith = pipe(map(startsWith), anyPass, filter);
map(startsWith)
는 실제로 각각 query
의 항목에 해당하는 술어 배열을 만듭니다. 이 술어 목록은 anyPass
로 전달됩니다. 이제 우리가 가진 것은 주어진 문자열이 true
의 문자열로 시작하는 경우 query
로 해석되는 단일 조건자입니다. 이제 이 술어를 필터의 인수로 전달할 수 있습니다. 이제 문자열 목록으로 textStartsWith
를 호출하거나 query
술어가 이미 부분적으로 적용된 필터 함수를 반환합니다. 이제 target
배열을 이 함수의 인수로 전달하기만 하면 됩니다.
추신 솔루션에 대한 더 많은 통찰력이 필요한 경우 스택 오버플로에 대한 이 스레드를 확인하십시오.
startsWith
와 anyPass
를 다음과 같이 결합합니다.
<사업부 클래스="스니펫 코드">
const textStartsWith = pipe (
map (startsWith),
anyPass,
flip (o) (String),
filter
)
console .log (
textStartsWith
(['pen', 'paper'])
(['pen', 'pencil', 'paper', '', undefined, true, 'books', 'paperback'])
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.min.js"></script>
<script>const {pipe, map, startsWith, anyPass, flip, o, filter} =
…</p>
Reference
이 문제에 관하여(조건부로 다른 어레이에 대해 어레이 필터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kuncheriakuruvilla/filtering-an-array-against-another-array-conditionally-1k9g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)