{"ScriptPreparationCode":"window.keys = [];\r\nwindow.values = [];\r\nconst NUM_KEYS = 100;\r\nconst COLLECTION_SIZE = 500;\r\nconst s = \u0022abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\u0022;\r\nfunction randString(len) {\r\n return Array(len).fill(\u0027\u0027).map(() =\u003E s.charAt(Math.floor(Math.random() * s.length))).join(\u0027\u0027);\r\n}\r\n\r\n// Build 100 keys\r\nfor (let i = 0; i \u003C NUM_KEYS; i\u002B\u002B) {\r\n keys[0] = randString(10);\r\n}\r\n\r\n// Fill array-of-arrays with values\r\nfor (let i = 0; i \u003C COLLECTION_SIZE; i\u002B\u002B) {\r\n values[i] = [];\r\n for (let j = 0; j \u003C NUM_KEYS; j\u002B\u002B) {\r\n values[i][j] = randString(10);\r\n }\r\n}\r\n","TestCases":[{"Name":"Iterate keys to build objects","Code":"const collection = Array(values.length);\r\n\r\nfor (let i = 0; i \u003C values.length; i\u002B\u002B) {\r\n const obj = collection[i] = {};\r\n const theseVals = values[i];\r\n for (let j = 0; j \u003C keys.length; j\u002B\u002B) {\r\n obj[keys[j]] = theseVals[j];\r\n }\r\n}","IsDeferred":false},{"Name":"Build new fn","Code":"function makeFlipFn(keys) {\r\n return new Function(\u0027v\u0027, \u0027idx\u0027, \u0060\r\n return {\r\n ${keys.map((key, i) =\u003E \u0060\u0022${key}\u0022: v[${i}][idx]\u0060).join(\u0027,\u0027)}\r\n }\r\n \u0060);\r\n}\r\n\r\nconst buildFn = makeFlipFn(keys);\r\n\r\nconst collection = Array(values.length);\r\nfor (let i = 0; i \u003C values.length; i\u002B\u002B) {\r\n collection[i] = buildFn(values[i], i);\r\n}\r\n","IsDeferred":false}]}