Here are the input data.
const input = [
{Time: "09:00", SpotName: "Area1", DataLabel: "Location1", Data: "2", CompareFlag: "true"},
{Time: "09:00", SpotName: "Area1", DataLabel: "Location2", Data: "1", CompareFlag: "true"},
{Time: "09:00", SpotName: "Area1", DataLabel: "Location2", Data: "1", CompareFlag: "false"},
{Time: "09:00", SpotName: "Area1", DataLabel: "Location3", Data: "2.0", CompareFlag: "true"},
{Time: "09:00", SpotName: "Area1", DataLabel: "Location4", Data: "100.0", CompareFlag: "true"},
{Time: "10:00", SpotName: "Area1", DataLabel: "Location5", Data: "0", CompareFlag: "true"},
{Time: "10:00", SpotName: "Area1", DataLabel: "Location2", Data: "0", CompareFlag: "true"},
{Time: "10:00", SpotName: "Area1", DataLabel: "Location3", Data: "0.0", CompareFlag: "true"},
{Time: "11:00", SpotName: "Area1", DataLabel: "Location5", Data: "0", CompareFlag: "false"},
{Time: "09:00", SpotName: "Area2", DataLabel: "Location3", Data: "6.0", CompareFlag: "true"},
{Time: "10:00", SpotName: "Area2", DataLabel: "Location5", Data: "5", CompareFlag: "true"},
{Time: "11:00", SpotName: "Area1", DataLabel: "Location2", Data: "0", CompareFlag: "false"},
{Time: "11:00", SpotName: "Area1", DataLabel: "Location3", Data: "0.0", CompareFlag: "true"},
{Time: "09:00", SpotName: "Area2", DataLabel: "Location5", Data: "5", CompareFlag: "false"},
{Time: "09:00", SpotName: "Area2", DataLabel: "Location2", Data: "7", CompareFlag: "true"},
{Time: "10:00", SpotName: "Area2", DataLabel: "Location2", Data: "7", CompareFlag: "true"},
{Time: "10:00", SpotName: "Area2", DataLabel: "Location3", Data: "0.0", CompareFlag: "true"},
{Time: "11:00", SpotName: "Area2", DataLabel: "Location5", Data: "5", CompareFlag: "true"},
{Time: "11:00", SpotName: "Area2", DataLabel: "Location2", Data: "7", CompareFlag: "true"},
{Time: "11:00", SpotName: "Area2", DataLabel: "Location3", Data: "0.0", CompareFlag: "true"}
];
I want get data as following.
const output = [
{Time: "09:00", SpotName: "Area1", DataLabel: "Location1", Data: "2", CompareFlag: "true"},
{Time: "09:00", SpotName: "Area1", DataLabel: "Location2", Data: "1", CompareFlag: "true"},
{Time: "09:00", SpotName: "Area1", DataLabel: "Location2", Data: "1", CompareFlag: "false"},
{Time: "10:00", SpotName: "Area1", DataLabel: "Location2", Data: "0", CompareFlag: "true"},
{Time: "11:00", SpotName: "Area1", DataLabel: "Location2", Data: "0", CompareFlag: "false"},
{Time: "09:00", SpotName: "Area1", DataLabel: "Location3", Data: "2.0", CompareFlag: "true"},
{Time: "10:00", SpotName: "Area1", DataLabel: "Location3", Data: "0.0", CompareFlag: "true"},
{Time: "11:00", SpotName: "Area1", DataLabel: "Location3", Data: "0.0", CompareFlag: "true"},
{Time: "09:00", SpotName: "Area1", DataLabel: "Location4", Data: "100.0", CompareFlag: "true"},
{Time: "10:00", SpotName: "Area1", DataLabel: "Location5", Data: "0", CompareFlag: "true"},
{Time: "11:00", SpotName: "Area1", DataLabel: "Location5", Data: "0", CompareFlag: "false"},
{Time: "09:00", SpotName: "Area2", DataLabel: "Location5", Data: "5", CompareFlag: "false"},
{Time: "10:00", SpotName: "Area2", DataLabel: "Location5", Data: "5", CompareFlag: "true"},
{Time: "11:00", SpotName: "Area2", DataLabel: "Location5", Data: "5", CompareFlag: "true"},
{Time: "09:00", SpotName: "Area2", DataLabel: "Location2", Data: "7", CompareFlag: "true"},
{Time: "10:00", SpotName: "Area2", DataLabel: "Location2", Data: "7", CompareFlag: "true"},
{Time: "11:00", SpotName: "Area2", DataLabel: "Location2", Data: "7", CompareFlag: "true"},
{Time: "09:00", SpotName: "Area2", DataLabel: "Location3", Data: "6.0", CompareFlag: "true"},
{Time: "10:00", SpotName: "Area2", DataLabel: "Location3", Data: "0.0", CompareFlag: "true"},
{Time: "11:00", SpotName: "Area2", DataLabel: "Location3", Data: "0.0", CompareFlag: "true"}
];
I want to sort and groupby "SpotName" and "DataLabel", "CompareFlag". Sort is input order not alphabetic. I'm trying to implement it as a recursive function, but it doesn't work. Who can help me? This is javascript.