{"ScriptPreparationCode":null,"TestCases":[{"Name":"V1","Code":"const pageCount = 4000;\r\nconst currentPage = 1;\r\nconst sibllingCount = 1\r\n\r\nconst clamp = (value, min, max) =\u003E {\r\n return Math.min(Math.max(value, min), max);\r\n};\r\n\r\nconst pages = Array.from({ length: pageCount }, (v, k) =\u003E k \u002B 1);\r\nconst min = clamp(currentPage - sibllingCount, 1, pageCount);\r\nconst max = clamp(currentPage \u002B sibllingCount, 1, pageCount);\r\n\r\nconst pagesToKeep = Array.from(new Set([pages[0], ...pages.slice(min - 1, max), pageCount])); \r\n\r\nconst p = pagesToKeep.reduce((acc,current)=\u003E{\r\n const last = acc[acc.length -1 ]\r\n if(current - last \u003E 1){\r\n return [...acc, \u0022...\u0022, current]\r\n }else{\r\n return [...acc, current]\r\n }\r\n},[])\r\n","IsDeferred":false},{"Name":"V2","Code":"const totalCount = 4000;\r\nconst pageSize = 20;\r\nconst siblingCount = 1;\r\nconst currentPage =1;\r\nconst totalPageCount = Math.ceil(totalCount / pageSize);\r\nconst DOTS = \u0022...\u0022\r\n\r\nconst range = (start, end) =\u003E {\r\n let length = end - start \u002B 1;\r\n return Array.from({length}, (_, idx) =\u003E idx \u002B start);\r\n};\r\n\r\n const totalPageNumbers = siblingCount * 2 \u002B 3;\r\n\r\n if (totalPageNumbers \u003E= totalPageCount) {\r\n return range(1, totalPageCount);\r\n }\r\n\r\n const leftSiblingIndex = Math.max(currentPage - siblingCount, 1);\r\n const rightSiblingIndex = Math.min(\r\n currentPage \u002B siblingCount,\r\n totalPageCount,\r\n );\r\n\r\n const shouldShowLeftDots = leftSiblingIndex \u003E 2;\r\n const shouldShowRightDots = rightSiblingIndex \u003C totalPageCount - 2;\r\n\r\n const pages = [\r\n 1,\r\n ...range(\r\n Math.max(leftSiblingIndex, rightSiblingIndex - siblingCount * 2),\r\n Math.min(rightSiblingIndex, leftSiblingIndex \u002B siblingCount * 2),\r\n ),\r\n totalPageCount,\r\n ];\r\n\r\n let pagination = Array.from(new Set(pages));\r\n\r\n if (shouldShowLeftDots) pagination.splice(1, 0, DOTS);\r\n if (shouldShowRightDots) pagination.splice(pagination.length - 1, 0, DOTS);","IsDeferred":false}]}