2017-09-21 8 views
-2

requiredPermissionsというプロパティーを持つnavLinksという名前の配列があります。また、許可の配列userPermisssionと命名しました。
今私はfilterすべてnavLinkそれに基づいて項目はrequiredPermission小道具はrequiredPermissionと等しいです。
私のアプローチは単純でしたが、リストになると混乱しました。ラムダで2つの損失とフィルター等価を比較

R.filter(R.equal(R.prop('requiredPermossions',x), ???)) 

EDIT:例えば 、我々は名前付きオブジェクトの配列は、プロパティuserPermisssion =['FIN']を持っており、リストrequiredPermission=['FIN','ADMIN']を持っNavLinksである持っていると仮定します。このユーザーには、アクセス許可のナビゲーションリンクを一致させる権限があると言うことができます。両方の変数は、役割と権限を示す文字列のリストです。

+1

小さなデータセットを表示できますか、期待される出力は何ですか? –

+0

@ScottSauyetコメントありがとうございました。質問が編集されました。 – amir

答えて

1

私はあなたが必要なものを得たと思う。コマンドをパイプするのがよりクリーンです。ここで何をしたいん例を行く:

const navLinks = [ 
    { requiredPermissions: ['FIN'] }, 
    { requiredPermissions: ['FIN', 'ADMIN'] }, 
]; 

const userPermissions = ['FIN']; 

const result = R.filter(
    R.pipe(
     R.prop('requiredPermissions'), 
     R.all(R.flip(R.contains)(userPermissions)), 
    ), navLinks); 

説明は、このように書きます:

  1. フィルタで使用される関数は、各オブジェクトと呼ばれるnavLinks
  2. 我々は唯一のキープパイプ内部requiredPermissionsリスト
  3. リストの各項目について、userPermissionsリストに含まれているかどうかを確認します。すべての権限がuserPermissionsに含まれている場合のみ、trueを返します。
関連する問題