{"ScriptPreparationCode":"const obj = {};\r\nconst array = [];\r\nconst arrayTuples = [];\r\n\r\nlet expectedSum = 0;\r\nfor (let i = 0; i \u003C 1000; i\u002B\u002B){\r\n\tconst letterNum1 = i % 27;\r\n \tconst letterNum2 = i % 5;\r\n \tconst letterNum3 = i % 13;\r\n \tconst key = String.fromCharCode(letterNum1 \u002B 65, letterNum2 \u002B 65, letterNum3 \u002B 65)\r\n \r\n obj[key] = i;\r\n array.push(key);\r\n\tarrayTuples.push([key, i])\r\n \r\n expectedSum \u002B= i;\r\n}\r\nconst preComputedKeys = Object.keys(obj);","TestCases":[{"Name":"Obj key for in iteration","Code":"const arrayPop = [].concat(arrayTuples);\r\n\r\nlet number = 0;\r\nfor (const key in obj){\r\n\tnumber \u002B= obj[key];\r\n}\r\nreturn number === expectedSum","IsDeferred":false},{"Name":"Array key for of iteration","Code":"const arrayPop = [].concat(arrayTuples);\r\n\r\nlet number = 0;\r\nfor (const key of array){\r\n\tnumber \u002B= obj[key];\r\n}\r\nreturn number === expectedSum","IsDeferred":false},{"Name":"Obj key precreate keys for of iteration","Code":"const arrayPop = [].concat(arrayTuples);\r\n\r\nconst keys = Object.keys(obj);\r\nlet number = 0;\r\nfor (const key of keys){\r\n\tnumber \u002B= obj[key];\r\n}\r\nreturn number === expectedSum","IsDeferred":false},{"Name":"Array tuple for of iteration","Code":"const arrayPop = [].concat(arrayTuples);\r\n\r\nlet number = 0;\r\nfor (const tuple of arrayTuples){\r\n\tnumber \u002B= tuple[1];\r\n}\r\nreturn number === expectedSum","IsDeferred":false},{"Name":"Precomputed obj keys iterative obj key access","Code":"const arrayPop = [].concat(arrayTuples);\r\n\r\nlet number = 0;\r\nfor (const key of preComputedKeys){\r\n\tnumber \u002B= obj[key];\r\n}\r\nreturn number === expectedSum","IsDeferred":false},{"Name":"Array tuple stack pop","Code":"// I think calling pop removes items for following test runs\r\n// --\u003E appears too fast without cloning the array\r\nconst arrayPop = [].concat(arrayTuples);\r\n\r\nlet number = 0;\r\nwhile (arrayPop.length \u003E 0){\r\n\tconst item = arrayPop.pop();\r\n\tnumber \u002B= item[1];\r\n}\r\nreturn number === expectedSum","IsDeferred":false},{"Name":"Array tuple for index iteration","Code":"const arrayPop = [].concat(arrayTuples);\r\n\r\nlet number = 0;\r\nfor (let i = 0; i \u003C arrayTuples.length; i\u002B\u002B){\r\n\tnumber \u002B= arrayTuples[i][1];\r\n}\r\nreturn number === expectedSum","IsDeferred":false}]}