Il secondo metodo sicuramente è più leggibile, entrambi sfruttano il metodo String.prototype.split() però il secondo come vedi restituisce un array di oggetti.

codice:
     const testArray = [
            "A - 1 - rosso",
            "B - 2 - giallo",
            "C - 3 - blu"
        ]

        // metodo 1
        const data = testArray.map(e => e.split('-'))
        const a = data[0][0]
        const uno = data[0][1]
        const rosso = data[0][2]
        console.log(a, uno, rosso)

        // metodo 2
        const data2 = testArray.map(e => {
            const splitStr = e.split('-')
            return {
                serie: splitStr[0],
                cat: splitStr[1],
                colore: splitStr[2]
            }
        })
        const a2 = data2[0].serie
        const uno2 = data2[0].cat
        const rosso2 = data2[0].colore
        console.log(a2, uno2, rosso2)