{"ScriptPreparationCode":"var testArray = [\r\n {\r\n description: \u0027Random description.\u0027,\r\n testNumber: 123456789,\r\n testBoolean: true,\r\n testObject: {\r\n testString: \u0027test string\u0027,\r\n testNumber: 12345,\r\n },\r\n testArray: [\r\n {\r\n myName: \u0027test name\u0027,\r\n myNumber: 123245,\r\n },\r\n ],\r\n },\r\n {\r\n description: \u0027Random description.\u0027,\r\n testNumber: 123456789,\r\n testBoolean: true,\r\n testObject: {\r\n testString: \u0027test string\u0027,\r\n testNumber: 12345,\r\n },\r\n testArray: [\r\n {\r\n myName: \u0027test name\u0027,\r\n myNumber: 123245,\r\n },\r\n ],\r\n },\r\n\r\n {\r\n description: \u0027Random description.\u0027,\r\n testNumber: 123456789,\r\n testBoolean: true,\r\n testObject: {\r\n testString: \u0027test string\u0027,\r\n testNumber: 12345,\r\n },\r\n testArray: [\r\n {\r\n myName: \u0027test name\u0027,\r\n myNumber: 123245,\r\n },\r\n ],\r\n },\r\n\r\n {\r\n description: \u0027Random description.\u0027,\r\n testNumber: 123456789,\r\n testBoolean: true,\r\n testObject: {\r\n testString: \u0027test string\u0027,\r\n testNumber: 12345,\r\n },\r\n testArray: [\r\n {\r\n myName: \u0027test name\u0027,\r\n myNumber: 123245,\r\n },\r\n ],\r\n },\r\n\r\n {\r\n description: \u0027Random description.\u0027,\r\n testNumber: 123456789,\r\n testBoolean: true,\r\n testObject: {\r\n testString: \u0027test string\u0027,\r\n testNumber: 12345,\r\n },\r\n testArray: [\r\n {\r\n myName: \u0027test name\u0027,\r\n myNumber: 123245,\r\n },\r\n ],\r\n },\r\n];\r\n\r\nvar testStringArray = [\r\n \u0027Random description.\u0027,\r\n \u0027Random description.\u0027,\r\n \u0027Random description.\u0027,\r\n \u0027Random description.\u0027,\r\n];\r\n\r\nvar merged = testStringArray.concat(testArray);\r\n\r\nvar baseLine = () =\u003E {\r\n return merged.map(elem =\u003E elem);\r\n};\r\n\r\nconst filterMapA = (array, predicate, mapFn) =\u003E {\r\n return array.reduce((accumulator, element, index) =\u003E {\r\n if (!predicate(element, index, array)) {\r\n return accumulator;\r\n }\r\n const shouldClone = typeof element === \u0027object\u0027 || Array.isArray(element);\r\n return [\r\n ...accumulator,\r\n mapFn(\r\n shouldClone ? structuredClone(element) : element,\r\n accumulator.length - 1,\r\n ),\r\n ];\r\n }, []);\r\n};\r\n\r\nconst filterMapB = (array, predicate, mapFn) =\u003E {\r\n return array.reduce((accumulator, element, index) =\u003E {\r\n if (!predicate(element, index, array)) {\r\n return accumulator;\r\n }\r\n\r\n return [\r\n ...accumulator,\r\n mapFn(structuredClone(element), accumulator.length - 1),\r\n ];\r\n }, []);\r\n};\r\n\r\nconst filterMapC = (array, predicate, mapFn) =\u003E {\r\n return array.reduce((accumulator, element, index) =\u003E {\r\n if (!predicate(element, index, array)) {\r\n return accumulator;\r\n }\r\n\r\n return [...accumulator, mapFn(element, accumulator.length - 1)];\r\n }, []);\r\n};\r\n\r\nconst filterMapD = (array, predicate, mapFn) =\u003E {\r\n return array.reduce((accumulator, element, index) =\u003E {\r\n if (!predicate(element, index, array)) {\r\n return accumulator;\r\n }\r\n accumulator.push(mapFn(element, accumulator.length - 1));\r\n return accumulator;\r\n }, []);\r\n};\r\n\r\nconst filterMapE = (array, predicate, mapFn) =\u003E {\r\n const length = array.length;\r\n const result = [];\r\n for (let index = 0; index \u003C length; index\u002B\u002B) {\r\n const value = array[index];\r\n if (predicate(value, index, array)) {\r\n result.push(mapFn(value, result.length - 1));\r\n }\r\n }\r\n return result;\r\n};\r\n\r\nvar checkBeforeClone = () =\u003E {\r\n filterMapA(\r\n merged,\r\n value =\u003E !!value,\r\n value =\u003E value,\r\n );\r\n};\r\n\r\nvar justClone = () =\u003E {\r\n filterMapB(\r\n merged,\r\n value =\u003E !!value,\r\n value =\u003E value,\r\n );\r\n};\r\n\r\nvar twoPass = () =\u003E {\r\n merged.filter(value =\u003E !!value).map(value =\u003E value);\r\n};\r\n\r\nvar noCopy = () =\u003E {\r\n filterMapC(\r\n merged,\r\n value =\u003E !!value,\r\n value =\u003E value,\r\n );\r\n};\r\n\r\nvar noCopy2 = () =\u003E {\r\n filterMapD(\r\n merged,\r\n value =\u003E !!value,\r\n value =\u003E value,\r\n );\r\n};\r\n\r\nvar forLoopFilterMap = () =\u003E {\r\n filterMapE(\r\n merged,\r\n value =\u003E !!value,\r\n value =\u003E value,\r\n );\r\n};\r\n","TestCases":[{"Name":"base line","Code":"baseLine()","IsDeferred":false},{"Name":"typeof before clone","Code":"checkBeforeClone()","IsDeferred":false},{"Name":"just clone","Code":"justClone()","IsDeferred":false},{"Name":"two passes","Code":"twoPass()","IsDeferred":false},{"Name":"no copy","Code":"noCopy()","IsDeferred":false},{"Name":"no copy2","Code":"noCopy2()","IsDeferred":false},{"Name":"plain for loop","Code":"forLoopFilterMap()","IsDeferred":false}]}