Actualizar:
Como @Ryan Leonard señaló correctamente, mi respuesta realmente no soluciona el punto que hice yo mismo ... Necesita recortar y eliminar espacios dobles con (por ejemplo) string.replace (/ + / g, "") .. O puede dividir el.className y luego eliminar valores vacíos con (por ejemplo) arr.filter (booleano).
const classes = element.className.split(' ').filter(Boolean);
o más moderno
const classes = element.classList;
Antiguo:
Con todas las respuestas dadas, nunca debe olvidarse del usuario .trim () (o $ .trim ())
Debido a que las clases se agregan y eliminan, puede suceder que haya múltiples espacios entre la cadena de clase ... por ejemplo, 'clase1 clase2 clase3'
Esto se convertiría en ['class1', 'class2', '', '', '', 'class3'] ..
Cuando usa trim, todos los espacios múltiples se eliminan.