I have an array of objects which I need to convert to a table (kind of pivoting the data).
I am trying to do is to create a pivot table-style data format from an Array of Objects.
I have the Array data have given below :
var originalArray = [
{BallId: 1, Overs: 0.1, BowlerName: "Deepak Chahar", Runs: 0, Extras: 1, Wickets: 0},
{BallId: 2, Overs: 0.1, BowlerName: "Deepak Chahar", Runs: 1, Extras: 0, Wickets: 0},
{BallId: 3, Overs: 0.2, BowlerName: "Deepak Chahar", Runs: 0, Extras: 0, Wickets: 0},
{BallId: 4, Overs: 0.3, BowlerName: "Deepak Chahar", Runs: 0, Extras: 0, Wickets: 0},
{BallId: 5, Overs: 0.4, BowlerName: "Deepak Chahar", Runs: 0, Extras: 0, Wickets: 0},
{BallId: 6, Overs: 0.5, BowlerName: "Deepak Chahar", Runs: 4, Extras: 0, Wickets: 1},
{BallId: 7, Overs: 0.6, BowlerName: "Deepak Chahar", Runs: 1, Extras: 0, Wickets: 0},
{BallId: 8, Overs: 1.1, BowlerName: "Tushar Deshpande", Runs: 4, Extras: 0, Wickets: 0},
{BallId: 9, Overs: 1.2, BowlerName: "Tushar Deshpande", Runs: 0, Extras: 0, Wickets: 0},
{BallId: 10, Overs: 1.3, BowlerName: "Tushar Deshpande", Runs: 4, Extras: 0, Wickets: 0},
{BallId: 11, Overs: 1.4, BowlerName: "Tushar Deshpande", Runs: 0, Extras: 0, Wickets: 0},
{BallId: 12, Overs: 1.5, BowlerName: "Tushar Deshpande", Runs: 0, Extras: 0, Wickets: 0},
{BallId: 13, Overs: 1.6, BowlerName: "Tushar Deshpande", Runs: 1, Extras: 0, Wickets: 0},
{BallId: 14, Overs: 2.1, BowlerName: "Deepak Chahar", Runs: 4, Extras: 0, Wickets: 0},
{BallId: 15, Overs: 2.2, BowlerName: "Deepak Chahar", Runs: 0, Extras: 1, Wickets: 1},
{BallId: 16, Overs: 2.2, BowlerName: "Deepak Chahar", Runs: 0, Extras: 0, Wickets: 0},
{BallId: 17, Overs: 2.3, BowlerName: "Deepak Chahar", Runs: 4, Extras: 0, Wickets: 0},
{BallId: 18, Overs: 2.4, BowlerName: "Deepak Chahar", Runs: 4, Extras: 0, Wickets: 0},
{BallId: 19, Overs: 2.5, BowlerName: "Deepak Chahar", Runs: 0, Extras: 0, Wickets: 0},
{BallId: 20, Overs: 2.6, BowlerName: "Deepak Chahar", Runs: 4, Extras: 0, Wickets: 1},
{BallId: 21, Overs: 3.1, BowlerName: "Maheesh Theekshana", Runs: 0, Extras: 0, Wickets: 0},
{BallId: 22, Overs: 3.2, BowlerName: "Maheesh Theekshana", Runs: 1, Extras: 0, Wickets: 0},
{BallId: 23, Overs: 3.3, BowlerName: "Maheesh Theekshana", Runs: 0, Extras: 0, Wickets: 0},
{BallId: 24, Overs: 3.4, BowlerName: "Maheesh Theekshana", Runs: 0, Extras: 1, Wickets: 0},
{BallId: 25, Overs: 3.5, BowlerName: "Maheesh Theekshana", Runs: 1, Extras: 0, Wickets: 0},
{BallId: 26, Overs: 3.6, BowlerName: "Maheesh Theekshana", Runs: 1, Extras: 0, Wickets: 0},
{BallId: 27, Overs: 4.1, BowlerName: "Mustafizur Rahman", Runs: 0, Extras: 0, Wickets: 0},
{BallId: 28, Overs: 4.2, BowlerName: "Mustafizur Rahman", Runs: 4, Extras: 0, Wickets: 0},
{BallId: 29, Overs: 4.3, BowlerName: "Mustafizur Rahman", Runs: 0, Extras: 0, Wickets: 1},
{BallId: 30, Overs: 4.4, BowlerName: "Ravindra Jadeja", Runs: 0, Extras: 0, Wickets: 0},
{BallId: 30, Overs: 4.5, BowlerName: "Ravindra Jadeja", Runs: 0, Extras: 0, Wickets: 0},
{BallId: 30, Overs: 4.6, BowlerName: "Ravindra Jadeja", Runs: 0, Extras: 0, Wickets: 1}
];
My Expected Output is Like :
var expectedArray = [
{BowlerName: "Deepak Chahar", Overs: 1, Run_1: 1, Run_2: 1, Run_3: 0, Run_4: 0, Run_5: 0, Run_6: 4, Run_7: 1, Run_8: 0, Run_9: 0, Run_10: 0, Runs: 7, Total_Runs: 7, Wickets: 1},
{BowlerName: "Tushar Deshpande", Overs: 2, Run_1: 4, Run_2: 0, Run_3: 4, Run_4: 0, Run_5: 0, Run_6: 1, Run_7: 0, Run_8: 0, Run_9: 0, Run_10: 0, Runs: 9, Total_Runs: 16, Wickets: 0},
{BowlerName: "Deepak Chahar", Overs: 3, Run_1: 4, Run_2: 1, Run_3: 0, Run_4: 4, Run_5: 4, Run_6: 0, Run_7: 4, Run_8: 0, Run_9: 0, Run_10: 0, Runs: 17, Total_Runs: 33, Wickets: 2},
{BowlerName: "Maheesh Theekshana", Overs: 4, Run_1: 0, Run_2: 1, Run_3: 0, Run_4: 1, Run_5: 1, Run_6: 1, Run_7: 0, Run_8: 0, Run_9: 0, Run_10: 0, Runs: 4, Total_Runs: 37, Wickets: 0},
{BowlerName: "Mustafizur Rahman, Ravindra Jadeja", Overs: 5, Run_1: 0, Run_2: 4, Run_3: 0, Run_4: 0, Run_5: 0, Run_6: 0, Run_7: 0, Run_8: 0, Run_9: 0, Run_10: 0, Runs: 4, Total_Runs: 50, Wickets: 2}
];
My Expected Output to be in a HTML Table like (Image is for Example Only) :
Sample Image (Cricket Scorecard with Data)
My Expected Output must have :
In the First Over and Third Over, I Have 2 Balls for 1’st over 1’st Ball as an extra, the extra also have to be added in the Runs and Total_Runs of Expected output.
In 3’rd over 2 repeated balls for 2’nd ball, while in the Expected Output have to add it in between the Run_1 to Run_10 column.
The more the extras is there the values between Run_1 to Run_10 columns will increase (as show in the image).
If a Over is shared by 2 players, the Expected Output BowlerName Column have to contain 2 players data (as mentioned in the 5’th Over of Expected Output).