{"ScriptPreparationCode":"var nbspCharacter = \u0027\\u00A0\u0027;\r\n\r\nvar GROUPS = [\r\n [ -Infinity, 0, \u0060\u003C 1${nbspCharacter}min\u0060 ],\r\n [ 1, 4, \u00601 - 4${nbspCharacter}min\u0060 ],\r\n [ 5, 14, \u00605 - 14${nbspCharacter}min\u0060 ],\r\n [ 15, 29, \u006015 - 29${nbspCharacter}min\u0060 ],\r\n [ 30, 59, \u006030 - 59${nbspCharacter}min\u0060 ],\r\n [ 60, Infinity, \u006060${nbspCharacter}min \u003C\u0060 ],\r\n];\r\n\r\nvar entries = [];\r\n\r\n\r\nfor(i=0; i\u003C100; i\u002B\u002B){\r\n\tentries.push({minutes: Math.floor(Math.random() * 2), count: Math.floor(Math.random() * 10)});\r\n\tentries.push({minutes: 30 \u002B Math.floor((Math.random() * 60)), count: Math.floor(Math.random() * 10)});\r\n}\r\n\r\nvar reducer = (acc, entry) =\u003E {\r\n const { minutes, count } = entry;\r\n const groupId = GROUPS.findIndex(([ min, max ]) =\u003E {\r\n return minutes \u003E= min \u0026\u0026 minutes \u003C= max;\r\n });\r\n\r\n acc[groupId] = {\r\n x: GROUPS[groupId][2] || (GROUPS[groupId].map((v) =\u003E \u0060${v}${nbspCharacter}min\u0060).join(\u0027 - \u0027)),\r\n count: parseInt((acc?.[groupId]?.count ?? 0), 10) \u002B parseInt(count, 10),\r\n };\r\n\r\n acc[groupId].y = acc[groupId].count;\r\n\r\n return acc;\r\n }","TestCases":[{"Name":"Object.values","Code":"Object.values(entries.reduce(reducer, {}))","IsDeferred":false},{"Name":"filter(Boolean)","Code":"entries.reduce(reducer, []).filter(Boolean);","IsDeferred":false}]}