JSFiddle - React, Tailwind, and code Playground

JavaScript

var casillas = {
	columnas : ['A','B','C','D','E','F','G','H'],
	filas	 : [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]
}
function ajedrez(reinas,rey){
	var movimientosReinas = [],
		movimientosRey    = [],
		enJaque = false,
		movimientosLibres = [],
		posicionRey = casillas.columnas[ rey[0] ] + casillas.filas[ rey[1] ];
	
	reinas.forEach(function(reina){
		obtenerMovimientos(reina, 8, movimientosReinas);
	});
	obtenerMovimientos(rey, 1, movimientosRey);
	
	movimientosReinas = movimientosReinas.filter(function(elem, pos, self) {
		return self.indexOf(elem) == pos;
	});
	movimientosRey = movimientosRey.filter(function(elem, pos, self) {
		return self.indexOf(elem) == pos;
	});
	
	//opcional simplemente para observar el comportamiento de los movimientos (para consultar las posiciones en un tablero)
	movimientosReinas.sort();
	movimientosRey.sort();
	
	//console.log(movimientosReinas);
	//console.log(movimientosRey);
	
	if( movimientosReinas.indexOf(posicionRey) != -1 ){
		enJaque = true;
	}
	
	movimientosRey.forEach(function(mov){
		if( movimientosReinas.indexOf(mov) == -1 ){
			movimientosLibres.push(mov);
		}
	}); 
	
	if( !enJaque && movimientosLibres.length == 0 ){
		return "Ahogado";
	} else if( enJaque &&  movimientosLibres.length == 0 ){
		return "Jaque mate";
	} else if( enJaque && movimientosLibres.length > 0 ){
		return movimientosLibres;
	} else {
		return "Libre";
	}
}

function obtenerMovimientos(pieza, limit, movimientos){
	var columnaInicial  = casillas.columnas[ pieza[0] ],
		filaInicial 	= casillas.filas[ pieza[1] ],
		posicionInicial = columnaInicial + filaInicial;
	//console.log(posicionInicial);
	for( i=1; i <= limit; i++ ) {
		//Movimientos en la columna
		if( pieza[1] - i >= 0 ){	
			movimientos.push( columnaInicial + casillas.filas[ pieza[1] - i ] );
		} 
		if( pieza[1] + i < 8 ){
			movimientos.push( columnaInicial + casillas.filas[ pieza[1] + i ] );
		}
		//Movimientos en la fila
		if( pieza[0] - i >= 0 ){
			movimientos.push( casillas.columnas[...