私はRamdaで遊んだばかりです。再帰的なdissocPath
私はinitialStateを持っています。オブジェクトのネストされたキーを削除するように求めるアクションが表示されます。これは、そのレベルの唯一のキーであれば、1つ上のレベルのキーを再帰的に削除する必要があります。
const initialState = {'a': {'x': {}, 'b':{'c': {'d': {}}}}}
const actionPath = ["a", "b", "c", "d"]
const actionObj = {'a': {'b':{'c': {'d': {}}}}}
//required output {'a': {'x': {}}}
私はRamda機能のみでこれをやってみましたが、スタックを絶えず爆破しました。私はこの機能をどうやって行うのかについては迷っています。
スタートactionPathでオブジェクトを削除して
const newState = R.dissocPath(actionPath, initialState) //{'a': {'x': {}, 'b':{'c':{}}}}}
次のキーアップが
R.isEmpty(R.equals(R.path(newPath, newState), {}))
空の場合、それが本当dissocだ場合、
const newPath = R.init(actionPath) //const actionPath = ["a", "b", "c"]
チェックactionPathを上に移動再度空でない限り繰り返す。 この時点から、あなたの状態に変わります。そして、あなたがチェックし、最後のステップで
{'a': {'x': {}, 'b':{}}}}
{'a': {'x': {}}}}
:
R.isEmpty(R.path(['a'], newState))
それはfalseを返す必要があります。
私はあなたが機能作成することができる機能
もう少し説明できますか?なぜあなたはxを保ちたいが、bを保たないのか? –
明瞭にするために編集されました – Luke