2017-11-07 6 views
0

オブジェクトツリーに対してR.find(R.propEq())の大文字小文字を区別しないようにする方法はありますか? (現在、私は使用していますRamda LibrariesJavascript 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は、どのレベルのツリーに対しても作用するはずです。

関連する問題