{"ScriptPreparationCode":"var list = [ ...Array(100000).keys() ].map((index) =\u003E ({ id: index }));\r\nvar fromIndex = 100000;","TestCases":[{"Name":"for loop","Code":"const nextUnreadIds = {\r\n \t[0]: null,\r\n [1]: null,\r\n}\r\n\r\nconst populateNextUnreadIds = (nextUnreadIds, fromIndex, list) =\u003E {\r\n for (let i = fromIndex; i \u003E= 0; i--) {\r\n [0, 1].forEach((id) =\u003E {\r\n if (nextUnreadIds[id] === null \u0026\u0026 list[i] === id) {\r\n nextUnreadIds[id] = list[i].id;\r\n }\r\n });\r\n if (nextUnreadIds[0] !== null \u0026\u0026 nextUnreadIds[1] !== null) {\r\n break;\r\n }\r\n }\r\n};\r\n\r\npopulateNextUnreadIds(nextUnreadIds, fromIndex, list);","IsDeferred":false},{"Name":"_.findLastIndex","Code":"const nextUnreadIds = {\r\n [0]: null,\r\n [1]: null,\r\n}\r\n\r\nconst populateNextUnreadIds = (nextUnreadIds, fromIndex, list) =\u003E {\r\n const firstIndex = _.findLastIndex(\r\n list,\r\n (id) =\u003E [0, 1].includes(id),\r\n fromIndex\r\n );\r\n const firstId = list[firstIndex];\r\n nextUnreadIds[firstId] = firstIndex;\r\n\r\n const secondIdToFind =\r\n firstId === 0 ? 1 : 0;\r\n\r\n const secondIndex = _.findLastIndex(\r\n list,\r\n (id) =\u003E secondIdToFind === id,\r\n firstIndex - 1\r\n );\r\n const secondId = list[secondIndex];\r\n nextUnreadIds[secondId] = secondIndex;\r\n};\r\n\r\npopulateNextUnreadIds(nextUnreadIds, fromIndex, list);","IsDeferred":false}]}