Combine data from multiple objects into something readable by chartJS

I have some data like this (ignore that they all have the same date, they will normally have different dates):

[
    {
        "Raise Hand": 0,
        "Be Quiet": 1,
        "Ask For Help": 2,
        "Be Good": 3,
        "Comment": "four?",
        "date": "2022-03-05",
        "email": "[email protected]"
    },
    {
        "Raise Hand": 0,
        "Be Quiet": 1,
        "Ask For Help": 2,
        "Be Good": 3,
        "Comment": "four?",
        "date": "2022-03-05",
        "email": "[email protected]"
    },
    {
        "Raise Hand": 0,
        "Be Quiet": 1,
        "Ask For Help": 2,
        "Be Good": 3,
        "Comment": "four?",
        "date": "2022-03-05",
        "email": "[email protected]"
    },
    {
        "Raise Hand": 0,
        "Be Quiet": 1,
        "Ask For Help": 1,
        "Be Good": 1,
        "Comment": "a",
        "date": "2022-03-05",
        "email": "[email protected]"
    },
    {
        "Raise Hand": 0,
        "Be Quiet": 0,
        "Ask For Help": 0,
        "Be Good": 0,
        "Comment": "a",
        "date": "2022-03-05",
        "email": "[email protected]"
    },
    {
        "Raise Hand": 2,
        "Be Quiet": 2,
        "Ask For Help": 2,
        "Be Good": 2,
        "Comment": "asd",
        "date": "2022-03-05",
        "email": "[email protected]"
    },
    {
        "Raise Hand": 4,
        "Be Quiet": 4,
        "Ask For Help": 4,
        "Be Good": 4,
        "Comment": "asds",
        "date": "2022-03-05",
        "email": "[email protected]"
    },
    {
        "Raise Hand": 1,
        "Be Quiet": 2,
        "Ask For Help": 1,
        "Be Good": 0,
        "Comment": "asdsd",
        "date": "2022-03-05",
        "email": "[email protected]"
    },
    {
        "Raise Hand": 2,
        "Be Quiet": 1,
        "Ask For Help": 1,
        "Be Good": 3,
        "Comment": "asdsd",
        "date": "2022-03-05",
        "email": "[email protected]"
    },
    {
        "Raise Hand": 3,
        "Be Quiet": 2,
        "Ask For Help": 1,
        "Be Good": 2,
        "Comment": "ads",
        "date": "2022-03-05",
        "email": "[email protected]"
    },
    {
        "Raise Hand": 1,
        "Be Quiet": 2,
        "Ask For Help": 1,
        "Be Good": 1,
        "Comment": "asds",
        "date": "2022-03-05",
        "email": "[email protected]"
    },
    {
        "Raise Hand": 3,
        "Be Quiet": 2,
        "Ask For Help": 1,
        "Be Good": 2,
        "Comment": "asds",
        "date": "2022-03-05",
        "email": "[email protected]"
    }
]

And I need the data formatted into something like this with a new array for each ‘challenge’. X would be the date and Y would be the value of that ‘challenge’ on that particular day:

[{x:"2-22-22", y:2}, {x:"2-23-22", y:3}]

For example, it would have an array for ‘Raise Hand’, an array for ‘Be Quiet’, etc. but also be dynamic so I can add more ‘challenges’ or replace them later. I also don’t need date, email, and anything containing ‘comment’ taken out.
Raise Hand:

[{x:"2-22-22", y:0},{x:"2-23-22", y:0},{x:"2-24-22", y:1}, ect]

I’ve spent a few hours working on this and this is how far I’ve gotten:

function formatData() {
        let labels = []
        let keys = []
        //* Get keys
        for(let i = 0; i < data.length; i++) {
            for(let j = 0; j < Object.keys(data[i]).length; j++) {
                if(keys.indexOf(Object.keys(data[i])[j]) == -1) {
                    keys.push(Object.keys(data[i])[j])
                } 
            }
        }
        keys = reduceKeys(keys)
        
        let totalData = {}
        //* Get data for each key
        for(let i = 0; i < data.length; i++) {
            for(let j = 0; j < keys.length; j++) {
                //* If data[i] DOES NOT have keys[j] then do this
                if(Object.keys(data[i]).indexOf(keys[j]) != -1) {
                    //* Make new key with array if it does not exist
                    if(Object.keys(totalData).indexOf(keys[j]) == -1) {
                        totalData[keys[j]] = []
                    }
                    totalData[keys[j]].push(data[i][keys[j]])
                } else {
                    //* Make new key with array if it does not exist
                    if(Object.keys(totalData).indexOf(keys[j]) == -1) {
                        totalData[keys[j]] = []
                    }
                    //* If the key does not exist for that entry the put 0
                    totalData[keys[j]].push(0)
                }
                if(data[i].date == null || data[i].date == undefined) {
                    labels.push("Error: No date")
                } else {
                    labels.push(data[i].date)
                }
            }
        }
        console.log(totalData)
        console.log(labels)
        let outputData = []
        for(let i = 0; i < labels.length; i++) {
            let tempArr = []
            for(let j = 0; j < Object.keys(totalData).length; j++) {
                // Object.keys(totalData)
                let length = totalData[Object.keys(totalData)[j]].length
                for(let k = 0; i < )
            }
        }
    }

    //* remove comments, date, and email
    function reduceKeys(keyArr) {
        let output = []
        for(let i = 0; i < keyArr.length; i++) {
            let key = keyArr[i]
            if(key.toLowerCase().includes("comment") || key.toLowerCase().includes("date") || key.toLowerCase().includes("email")) continue
            output.push(key)
        }
        return output
    }

For more info on how I need the data formatted please look at this ChartJS docs page