{"ScriptPreparationCode":"const data = new Array(100);\r\nfor(let i = 0; i \u003C 100; i\u002B\u002B) {\r\n data[i] = Math.random().toString(36).slice(2); \r\n}\r\n// Randomly ~20% of the values duplicates\r\nfor(let i = 0; i \u003C 100; i\u002B\u002B) {\r\n if(Math.random() \u003C 0.2) {\r\n data[i] = data[Math.floor(Math.random() * 100)]; \r\n }\r\n}\r\n\r\nconst data2 = new Array(100);\r\nfor(let i = 0; i \u003C 100; i\u002B\u002B) {\r\n if(Math.random() \u003C 0.2) {\r\n data2[i] = data[Math.floor(Math.random() * 100)]; \r\n } else {\r\n data2[i] = Math.random().toString(36).slice(2);\r\n }\r\n}","TestCases":[{"Name":"Object - insertion only","Code":"const obj = {};\r\n\r\nfor(const d of data) {\r\n obj[d] = true; \r\n}","IsDeferred":false},{"Name":"Set - insertion only","Code":"const set = new Set();\r\n\r\nfor(const d of data) {\r\n set.add(d); \r\n}","IsDeferred":false},{"Name":"Object - insertion \u002B reading, in operator","Code":"const obj = {};\r\n\r\nfor(const d of data) {\r\n obj[d] = true; \r\n}\r\n\r\nlet hits = 0;\r\nfor(const d2 of data2) {\r\n if(d2 in obj){\r\n hits\u002B\u002B;\r\n }\r\n}","IsDeferred":false},{"Name":"Object - insertion \u002B reading, indexing","Code":"const obj = {};\r\n\r\nfor(const d of data) {\r\n obj[d] = true; \r\n}\r\n\r\nlet hits = 0;\r\nfor(const d2 of data2) {\r\n if(obj[d2]){\r\n hits\u002B\u002B;\r\n }\r\n}","IsDeferred":false},{"Name":"Set - insertion \u002B reading","Code":"const set = new Set();\r\n\r\nfor(const d of data) {\r\n set.add(d); \r\n}\r\n\r\nlet hits = 0;\r\nfor(const d2 of data2) {\r\n if(set.has(d2)){\r\n hits\u002B\u002B;\r\n }\r\n}","IsDeferred":false}]}