Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

159
Visualizações
Función de clasificación que toma la clave del objeto como argumento para permitir la clasificación de múltiples objetos estructurados de manera diferente

Estoy creando una aplicación de tarjeta flash que deberá poder ordenar alfabéticamente listas de mazos, cartas, etc. y quiero usar una función de clasificación rápida para todos ellos en lugar de crear una función de clasificación para cada uno. Pensé que simplemente pasaría la matriz de objetos y la clave que contiene el contenido que se ordenará como argumentos a la función, pero no se ordena correctamente.

El siguiente código que había escrito para ordenar las tarjetas alfabéticamente por la propiedad 'pregunta' del objeto de la tarjeta funciona:

 const pivot = (arr, start) => { let pivotVal = arr[start]['question'].toUpperCase(); let swapIdx = start; for(let a = start + 1; a < arr.length; a++){ if(pivotVal > arr[a]['question'].toUpperCase()){ swapIdx++; swap(arr, swapIdx, a); } }; swap(arr, start, swapIdx); return swapIdx; } const alphabetize = (arr, start = 0, end = arr.length - 1) => { if(start < end){ let pivotIdx = pivot(arr, start); alphabetize(arr, start, pivotIdx - 1) alphabetize(arr, pivotIdx + 1); } return arr; } setCards(alphabetize(newCards, 0, cards.length - 1)); //(useState hook)

Pero luego, tratar de hacerlo universalmente utilizable al pasar una clave como argumento con el siguiente código no:

 const pivot = (arr, start, comparand) => { let pivotVal = arr[start][`${comparand}`].toUpperCase(); let swapIdx = start; for(let a = start + 1; a < arr.length; a++){ if(pivotVal > arr[a][`${comparand}`].toUpperCase()){ swapIdx++; swap(arr, swapIdx, a); } }; swap(arr, start, swapIdx); return swapIdx; } const alphabetize = (arr, start = 0, end = arr.length - 1, comparand) => { if(start < end){ let pivotIdx = pivot(arr, start, comparand); alphabetize(arr, start, pivotIdx - 1, comparand) alphabetize(arr, pivotIdx + 1, comparand); } return arr; } setCards(alphabetize(newCards, 0, cards.length - 1, 'question')); //(useState hook)

No se rompe ni nada; simplemente no está ordenando alfabéticamente la lista. Leí las respuestas a esta publicación En JavaScript, ¿cómo puedo usar un parámetro de función como clave para un objeto? y parecía que el uso de literales de plantilla para claves dinámicas debería funcionar. ¿Alguna idea de lo que está mal con el segundo bloque de código?

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda