{"ScriptPreparationCode":"var pages = [{a:1}, {a:2}, {a:3},{a:4}];\r\n\r\nfunction movePageSplice(pages, fromIndex, toIndex) {\r\n const arr = [...pages];\r\n var element = arr[fromIndex];\r\n arr.splice(fromIndex, 1);\r\n arr.splice(toIndex, 0, element);\r\n return arr\r\n}\r\n\r\nfunction movePageReduceSpread(pages, fromIndex, toIndex) {\r\n const correctedToIndex = fromIndex \u003C toIndex ? toIndex \u002B 1 : toIndex;\r\n return pages.reduce((memo, item, index, arr)=\u003E{\r\n \tif (index === correctedToIndex) {\r\n return [...memo, arr[fromIndex], item];\r\n } else if(index !== fromIndex){\r\n return [...memo, item];\r\n }\r\n return memo; \r\n },[])\r\n}\r\n\r\nfunction movePageReducePush(pages, fromIndex, toIndex) {\r\n const correctedToIndex = fromIndex \u003C toIndex ? toIndex \u002B 1 : toIndex;\r\n return pages.reduce((memo, item, index, arr)=\u003E{\r\n \tif (index === correctedToIndex) {\r\n memo.push(arr[fromIndex], item)\r\n } else if(index !== fromIndex){\r\n memo.push(item)\r\n } \r\n return memo \r\n },[])\r\n}\r\n\r\nconsole.log(movePageSplice(pages, 2, 0), \u0027movePageSplice\u0027)\r\nconsole.log(movePageSplice(pages, 0, 2), \u0027movePageSplice\u0027)\r\nconsole.log(movePageReduceSpread(pages, 2, 0), \u0027movePageReduceSpread\u0027)\r\nconsole.log(movePageReduceSpread(pages, 0, 2), \u0027movePageReduceSpread\u0027)\r\nconsole.log(movePageReducePush(pages, 2, 0), \u0027movePageReducePush\u0027)\r\nconsole.log(movePageReducePush(pages, 0, 2), \u0027movePageReducePush\u0027)","TestCases":[{"Name":"move with splice","Code":"movePageSplice(pages, 2, 0)","IsDeferred":false},{"Name":"move with reduce and push","Code":"movePageReducePush(pages, 2, 0)","IsDeferred":false},{"Name":"move with reduce and spread","Code":"movePageReduceSpread(pages, 2, 0)","IsDeferred":false}]}