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

207
Visualizações
clasificación de matriz anidada de javascript, basada en una matriz de clasificaciones internas de longitud variable

La matriz externa debe ordenarse en función de la combinación de clasificaciones de la matriz de "pruebas" internas de longitud variable de cada estudiante, de forma ascendente. Aquí hay una versión simplificada de los datos sin procesar.

 [ { "studentId": "A", "tests": [ { "testId": 100, "rank": 2 }, { "testId": 101, "rank": 1 }, { "testId": 102, "rank": 1 } ] }, { "studentId": "G", "tests": [ { "testId": 103, "rank": 3 }, { "testId": 104, "rank": 6 }, { "testId": 105, "rank": 3 }, { "testId": 106, "rank": 4 }, { "testId": 107, "rank": 3 } ] } ]

Para abreviar, aquí hay una ilustración comentada para capturar las reglas para clasificar y desempatar. Imagine que cada uno de los siguientes representa la secuencia preordenada de los rangos de prueba individuales de cada estudiante. (Tenga en cuenta que los ID de prueba no importan, excepto para preservarlos. No nos preocupa comparar pruebas individuales, solo la combinación general de rangos de cada estudiante):

 StudentId : [ascending sequence of test ranks] A : [ 1, 1, 2] // A beats B due to 2nd element B : [ 1, 2, 2] // B beats C due to 1st element C : [ 2, 3] // Let C beat D due to shorter length! D : [ 2, 3, 3] // D beats E due to 1st element E : [ 3, 3, 3, 4, 5, 7] // E beats F and G due to 5th element F : [ 3, 3, 3, 4, 6] // F and G are tied. Let F beat G due to studentId! (alphanumeric ascending) G : [ 3, 3, 3, 4, 6]

Ninguno de los datos sin procesar está ordenado. Salida finalizada para incluir una matriz externa ordenada, con la matriz de prueba de cada estudiante ordenada por rango. Por favor, hágamelo saber si algo no está claro, y gracias.

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Entonces, básicamente, la matriz debe ordenarse según la sum de los rangos de prueba en orden ascendente, ¿sí?

 function sumTestRanks(students) { for(let student of students) { sumStudentTestRanks(student); } } function sumStudentTestRanks(student) { let testsRankTotal = 0; const tests = student.tests; for(let test of tests) { testsRankTotal += test.rank; } student.testsRankTotal = testsRankTotal; } function studentsSorter(studentA, studentB) { if(studentA.testsRankTotal < studentB.testsRankTotal) { return -1; } if(studentA.testsRankTotal > studentB.testsRankTotal) { return 1; } return studentA.studentId.localeCompare(studentB.studentId); } const students = [...]; sumTestRanks(students) console.log(students.sort(studentsSorter));

Actualizar:

En ese caso, va así:

  1. Determinar el tamaño mínimo comparable
  2. Haz una comparación dentro de esa longitud.
  3. Si es una corbata dentro del tamaño comparable
    • Compare por id, si ambos tamaños de prueba son iguales.
    • Por último, compare por longitud
 function studentsSorter(studentA, studentB) { const studentATests = studentA.tests; const studentBTests = studentB.tests; const studentATestsLength = studentATests.length; const studentBTestsLength = studentBTests.length; let scanLength = studentATestsLength; if(scanLength > studentBTestsLength) { scanLength = studentBTestsLength; } for(let index = 0; index < scanLength; index++) { const studentATest = studentATests[index]; const studentBTest = studentBTests[index]; if(studentATest.rank === studentBTest.rank) { continue; } if(studentATest.rank < studentBTest.rank) { return -1; } else if(studentATest.rank > studentBTest.rank) { return 1; } } if(studentATestsLength === studentBTestsLength) { return studentA.studentId.localeCompare(studentB.studentId); } else if(studentATestsLength < studentBTestsLength) { return -1; } else { return 1; } }

Hice referencia a esta respuesta para comprender cómo funciona el comparador en JavaScript.

about 4 years ago · Santiago Trujillo Relatório
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