{"ScriptPreparationCode":"var channelStocks = [\r\n {\r\n gateId: \u0022khusus-pi\u0022,\r\n channel: \u0022srcl\u0022,\r\n stock: 1\r\n },\r\n {\r\n gateId: \u0022khusus-pi\u0022,\r\n channel: \u0022tkpd\u0022,\r\n stock: 2\r\n },\r\n {\r\n gateId: \u0022khusus-pi\u0022,\r\n channel: \u0022shpe\u0022,\r\n stock: 3\r\n },\r\n {\r\n gateId: \u0022khusus-pi\u0022,\r\n channel: \u0022lzda\u0022,\r\n stock: 4\r\n },\r\n {\r\n gateId: \u0022khusus-pi-2\u0022,\r\n channel: \u0022srcl\u0022,\r\n stock: 10\r\n },\r\n {\r\n gateId: \u0022khusus-pi-2\u0022,\r\n channel: \u0022tkpd\u0022,\r\n stock: 20\r\n },\r\n {\r\n gateId: \u0022khusus-pi-2\u0022,\r\n channel: \u0022shpe\u0022,\r\n stock: 30\r\n },\r\n {\r\n gateId: \u0022khusus-pi-2\u0022,\r\n channel: \u0022lzda\u0022,\r\n stock: 40\r\n },\r\n \t{\r\n gateId: \u0022khusus-pi-3\u0022,\r\n channel: \u0022srcl\u0022,\r\n stock: 100\r\n },\r\n {\r\n gateId: \u0022khusus-pi-3\u0022,\r\n channel: \u0022tkpd\u0022,\r\n stock: 200\r\n },\r\n {\r\n gateId: \u0022khusus-pi-3\u0022,\r\n channel: \u0022shpe\u0022,\r\n stock: 300\r\n },\r\n {\r\n gateId: \u0022khusus-pi-3\u0022,\r\n channel: \u0022lzda\u0022,\r\n stock: 400\r\n },\r\n];","TestCases":[{"Name":"Reduce \u002B Every \u002B Map","Code":"var gateStocks = channelStocks.reduce((result, nextChannelStock) =\u003E {\r\n if (\r\n result.every(\r\n gateStock =\u003E\r\n gateStock.gateId !==\r\n nextChannelStock.gateId\r\n )\r\n ) {\r\n result.push({\r\n gateId: nextChannelStock.gateId,\r\n details: [\r\n {\r\n stocks: nextChannelStock.stock,\r\n channelId: nextChannelStock.channel,\r\n },\r\n ],\r\n });\r\n return result;\r\n }\r\n return result.map(gateStock =\u003E {\r\n if (\r\n gateStock.gateId === nextChannelStock.gateId\r\n ) {\r\n return {\r\n ...gateStock,\r\n details: [\r\n ...gateStock.details,\r\n {\r\n stocks: nextChannelStock.stock,\r\n channelId:\r\n nextChannelStock.channel,\r\n },\r\n ],\r\n };\r\n }\r\n return gateStock;\r\n });\r\n},[]);","IsDeferred":false},{"Name":"Reduce \u002B Object","Code":"var gateStocks = channelStocks.reduce((gateStock, channelStock) =\u003E {\r\n if(gateStock[channelStock.gateId]) {\r\n gateStock[channelStock.gateId] = {\r\n ...gateStock[channelStock.gateId],\r\n details: [\r\n ...gateStock[channelStock.gateId].details,\r\n {\r\n stock: channelStock.stock,\r\n channelId: channelStock.channel,\r\n }\r\n ]\r\n }\r\n \r\n return gateStock;\r\n }\r\n \r\n gateStock[channelStock.gateId] = {\r\n gateId: channelStock.gateId,\r\n details: [{\r\n stock: channelStock.stock,\r\n channelId: channelStock.channel,\r\n }]\r\n }\r\n \r\n return gateStock;\r\n}, {})\r\n\r\n\r\nconst result = Object.keys(gateStocks).map(gateId =\u003E gateStocks[gateId]);\r\n","IsDeferred":false}]}