{"ScriptPreparationCode":"var arrIds = [\r\n \u0022720d8d01-b354-4bf0-85dc-601a5856e54e\u0022,\r\n \u002263b12fb8-25b0-4860-97b5-1ef671395028\u0022,\r\n]\r\n\r\nvar n = 300;\r\n\r\nvar things = [...Array(n)].map((_, i) =\u003E ({\r\n account_id: Math.random() \u003C 0.5 ? \u0060${i}-a\u0060.repeat(10) : arrIds[i % arrIds.length],\r\n v: i,\r\n}));\r\n\r\nfunction bucket(arr, iteratee) {\r\n return arr.reduce((acc, v) =\u003E {\r\n const k = iteratee(v);\r\n if (acc[k]) {\r\n acc[k].push(v);\r\n } else {\r\n acc[k] = [v];\r\n }\r\n return acc;\r\n }, {})\r\n}\r\n\r\nvar iteratee = (e) =\u003E e.account_id;","TestCases":[{"Name":"// filter, Array.includes","Code":"// filter, Array.includes\r\nconst r1 = things.filter(e =\u003E arrIds.includes(e.account_id));","IsDeferred":false},{"Name":"// filter, Set from array","Code":"// filter, Set from array\r\nconst setIds = new Set(arrIds);\r\nconst r2 = things.filter(e =\u003E setIds.has(e.account_id));","IsDeferred":false},{"Name":"// filter, Set from loop","Code":"// filter, Set from loop\r\nconst setIdsLoop = new Set();\r\n\r\nfor (let i = 0, len = arrIds.length; i \u003C len; \u002B\u002Bi) {\r\n setIdsLoop.add(arrIds[i])\r\n}\r\nconst r3 = things.filter(e =\u003E setIdsLoop.has(e.account_id));","IsDeferred":false},{"Name":"// filter, in Object","Code":"// filter, in Object\r\nconst objIds = {};\r\nfor (let i = 0, len = arrIds.length; i \u003C len; \u002B\u002Bi) {\r\n objIds[arrIds[i]] = true;\r\n}\r\nconst r4 = things.filter(e =\u003E e.account_id in objIds);","IsDeferred":false},{"Name":"// bucket, Obj","Code":"// bucket, Obj\r\nconst bucketedObj = bucket(things, iteratee);\r\n\r\nlet r5;\r\nfor (let i = 0, len = arrIds.length; i \u003C len; \u002B\u002Bi) {\r\n if (bucketedObj[arrIds[i]]) {\r\n if (r5) {\r\n const toAdd = bucketedObj[arrIds[i]];\r\n const existingLength = r5.length;\r\n const addedLength = toAdd.length;\r\n r5.length = existingLength \u002B addedLength;\r\n for (let i = 0; i \u003C addedLength; \u002B\u002Bi) {\r\n r5[existingLength \u002B i] = toAdd[i]\r\n }\r\n } else {\r\n r5 = bucketedObj[arrIds[i]];\r\n }\r\n\r\n }\r\n}","IsDeferred":false}]}