Solución

JL@juanluisabreu_4c541ef6
·29/3/2026TypeScript
solution.tsTypeScript
type Criterio = {
  clave: string;
  orden: "asc" | "desc";
};

function ordenarPorMultiplesCriterios(
  items: Record<string, string | number>[],
  criterios: Criterio[]
): Record<string, string | number>[] {

  let arreglo = [...items];
  
  for(let i = 0; i < arreglo.length - 1; i++)
  {
    for(let j = 0; j < arreglo.length -1 - i; j++)
    {
      let intercambiar = false;

      for(let c = 0; c < criterios.length; c++)
      {
        let clave = criterios[c].clave;
        let orden = criterios[c].orden;

        let valorActual = arreglo[j][clave];
        let valorSiguiente = arreglo[j+1][clave];

        if (valorActual == valorSiguiente) {
          continue;
        }

        if (orden == 'asc') 
        {
          intercambiar = valorActual > valorSiguiente;
        } else {
          intercambiar = valorActual < valorSiguiente;
        }

        break;
      }

      if (intercambiar) 
      {
        const valor = arreglo[j];
        arreglo[j]=arreglo[j+1];
        arreglo[j+1]= valor;
      }

    }
  }

  return arreglo;
}

// No modificar: necesario para evaluar el resultado.
export { ordenarPorMultiplesCriterios };
0respuestas
Respuestas
0

Aún no hay respuestas

¡Sé el primero en responder!

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.
Markdown