2017-11-07 1 views
0

개체 트리에 대해 R.find (R.propEq()) 대/소문자를 구분하지 못하게 할 방법이 있습니까? (현재 내가 사용하고있는 Ramda Libraries)Javascript Ramda 어떻게 R.find (R.propEq()) 대소 문자를 구분하지 않습니까?

이 내 OBJ 나무의 조각 :

const objectTree = [ { __type: 'ix:ChecklistGridSection', 
    For: 'QuestionAnswers', 
    childNodes: 
    [ { __type: 'Sorting', childNodes: [Array] }, 
    { __type: 'grouping', childNodes: [Array] }, 
    { __type: 'Tabs', childNodes: [Array] }, 
    ... 

내가 매개 변수를 변경할 수 없습니다 이와 같은 기능이 있습니다

R.find(R.propEq('__type', 'ix:checklistgridsection'))(objectTree);

'ix : checkListGridSection'이 'ix : checklistgridsection'이 아닌 매개 변수로만 작동합니다. 나는 다른 사람들도 나무의 잎을 위해 일할 필요가있다.

모든 트리를 소문자로 만드는 것은 나쁜 결정이라고 생각합니다. R.find (R.propEq()) 대소 문자를 구분하지 못하게하는 방법이 있다면 생각하고있었습니다.

답변

0

이 같은 propSatisfies 대신 propEq 사용할 수 있습니다 당신은 Ramda REPL에 대한 조치에서 볼 수

const eqInsensitive = R.curry(
    (a, b) => String(a).toLowerCase() === String(b).toLowerCase() 
) 

R.find(
    R.propSatisfies(eqInsensitive('ix:checklistgridsection'), '__type'), 
    objectTree 
) 

.

이 문제를 해결하지 않는 :

나는 그것이 나무의 또한 다른 사람의 잎을 위해 작동합니다 필요합니다.

여기에서 원하는 항목을 모르겠습니다. Ramda는 자동으로 트리 구조를 탐색하여 해당 술어와 일치하는 일부 하위 요소를 찾습니다. 직접 인프라를 구축해야합니다. 그러나이 동일한 find은 모든 수준의 트리에서 작동해야합니다.

관련 문제