{"ScriptPreparationCode":null,"TestCases":[{"Name":"Reduce","Code":"const tree = [\r\n { link: { url: \u0027/de\u0027, text: \u0027link1\u0027 },\r\n children: [\r\n { link: { url: \u0027/de/visible1\u0027, text: \u0027rendered on mobile and desktop\u0027 }, children: [] },\r\n { link: { url: \u0027/de/visible2\u0027, textSubNavigation: \u0027rendered on mobile only\u0027 }, children: [\r\n { link: { url: \u0027/de/2/3\u0027, textSubNavigation: \u0027test\u0027 }, children: [] }\r\n ] },\r\n ] },\r\n { link: { url: \u0027/en\u0027, text: \u0027link2\u0027 }, children: [] },\r\n { link: { url: \u0027/hidden\u0027, textSubNavigation: \u0027never rendered (no text key)\u0027 }, children: [] },\r\n]\r\n\r\nconst matcher = R.pathEq([ \u0027link\u0027, \u0027url\u0027 ], \u0027/de/visible1\u0027)\r\n\r\nconst findRecursivelyReduce = R.curry((items, matcherFn, childProp) =\u003E R.reduce((acc, item) =\u003E {\r\n if (acc) return acc\r\n if (matcherFn(item)) return item\r\n if (R.has(childProp, item)) return findRecursivelyReduce(R.prop(childProp, item), matcherFn, childProp)\r\n return false\r\n}, false, items))\r\n\r\nfindRecursivelyReduce(tree, matcher, \u0027children\u0027)\r\n","IsDeferred":false},{"Name":"For","Code":"const tree = [\r\n { link: { url: \u0027/de\u0027, text: \u0027link1\u0027 },\r\n children: [\r\n { link: { url: \u0027/de/visible1\u0027, text: \u0027rendered on mobile and desktop\u0027 }, children: [] },\r\n { link: { url: \u0027/de/visible2\u0027, textSubNavigation: \u0027rendered on mobile only\u0027 }, children: [\r\n { link: { url: \u0027/de/2/3\u0027, textSubNavigation: \u0027test\u0027 }, children: [] }\r\n ] },\r\n ] },\r\n { link: { url: \u0027/en\u0027, text: \u0027link2\u0027 }, children: [] },\r\n { link: { url: \u0027/hidden\u0027, textSubNavigation: \u0027never rendered (no text key)\u0027 }, children: [] },\r\n]\r\n\r\nconst matcher = R.pathEq([ \u0027link\u0027, \u0027url\u0027 ], \u0027/de/visible1\u0027)\r\n\r\nconst findRecursivelyFor = R.curry((items, matcherFn, childProp) =\u003E {\r\n for (let i = 0; i \u003C items.length; i \u002B= 1) {\r\n const item = items[i]\r\n if (matcherFn(item)) return item\r\n if (R.has(childProp, item)) {\r\n const matchingSubItem = findRecursivelyFor(R.prop(childProp, item), matcherFn, childProp)\r\n if (matchingSubItem) return matchingSubItem\r\n }\r\n }\r\n})\r\n\r\nfindRecursivelyFor(tree, matcher, \u0027children\u0027)","IsDeferred":false}]}