{"ScriptPreparationCode":"window.content = [{\r\n \u0022date\u0022: \u00222017-07-31\u0022,\r\n \u0022amount\u0022: \u00225422\u0022\r\n },\r\n {\r\n \u0022date\u0022: \u00222017-06-30\u0022,\r\n \u0022amount\u0022: \u00225220\u0022\r\n },\r\n {\r\n \u0022date\u0022: \u00222017-05-31\u0022,\r\n \u0022amount\u0022: \u00225365\u0022\r\n },\r\n {\r\n \u0022date\u0022: \u00222017-08-31\u0022,\r\n \u0022amount\u0022: \u00225451\u0022\r\n },\r\n {\r\n \u0022date\u0022: \u00222017-09-30\u0022,\r\n \u0022amount\u0022: \u00225303\u0022\r\n },\r\n {\r\n \u0022date\u0022: \u00222018-03-31\u0022,\r\n \u0022amount\u0022: \u00225654\u0022\r\n },\r\n {\r\n \u0022date\u0022: \u00222017-10-31\u0022,\r\n \u0022amount\u0022: \u00225509\u0022\r\n },\r\n {\r\n \u0022date\u0022: \u00222017-12-31\u0022,\r\n \u0022amount\u0022: \u00225567\u0022\r\n },\r\n {\r\n \u0022date\u0022: \u00222018-01-31\u0022,\r\n \u0022amount\u0022: \u00225597\u0022\r\n },\r\n {\r\n \u0022date\u0022: \u00222017-11-30\u0022,\r\n \u0022amount\u0022: \u00225359\u0022\r\n },\r\n {\r\n \u0022date\u0022: \u00222018-02-28\u0022,\r\n \u0022amount\u0022: \u00225082\u0022\r\n },\r\n {\r\n \u0022date\u0022: \u00222018-04-14\u0022,\r\n \u0022amount\u0022: \u00222567\u0022\r\n }\r\n];","TestCases":[{"Name":"1reduce1foreach","Code":"function sortOperations(operations) {\r\nconst withoutSorting = operations.reduce((acc, {date}) =\u003E {\r\nconst [year, month, day] = date.split(\u0027-\u0027)\r\nconst monthDay=\u0060${month}-${day}\u0060\r\nreturn {\r\n...acc,\r\n[year]: Array.isArray(acc[year]) ? [...acc[year], monthDay] : [monthDay]}\r\n}, {})\r\nObject.entries(withoutSorting).forEach(([key, values])=\u003E{withoutSorting[key] = values.sort()})\r\nreturn withoutSorting\r\n}\r\nsortOperations(window.content)","IsDeferred":false},{"Name":"Arrays","Code":"function sortOperations(operations){\r\n let splittedDates = operations.map((e)=\u003Ee.date.split(\u0022-\u0022))\r\n let years = Array.from(new Set(splittedDates.map((e)=\u003Ee[0])))\r\n let output={}\r\n years.forEach((e)=\u003E{\r\n output[e] = splittedDates.filter(e1=\u003Ee1[0]===e).map(e1=\u003E[e1[1],e1[2]].join(\u0022-\u0022)).sort()\r\n })\r\n return output\r\n}\r\n\r\n\r\nsortOperations(window.content)","IsDeferred":false},{"Name":"2reduce","Code":"function sortOperations(operations) {\r\nconst withoutSorting = operations.reduce((acc, {date}) =\u003E {\r\nconst [year, month, day] = date.split(\u0027-\u0027)\r\nconst monthDay=\u0060${month}-${day}\u0060\r\nreturn {\r\n...acc,\r\n[year]: Array.isArray(acc[year]) ? [...acc[year], monthDay] : [monthDay]}\r\n}, {})\r\nreturn Object.entries(withoutSorting).reduce((acc, [key, values])=\u003E ({\r\n...acc,\r\n[key]: values.sort((a,b) =\u003E \u002Ba.replace(/-/g, \u0027\u0027) - \u002Bb.replace(/-/g, \u0027\u0027))\r\n}), {})\r\n}\r\n\r\nsortOperations(window.content)","IsDeferred":false}]}