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

167
Visualizações
Función Javascript para obtener 3 objetos basados en accesorios

Estoy tratando de hacer una función para obtener los objetos top3 de una matriz basada en accesorios. Mi sitio no se puede cargar, así que creo que esta función se ejecuta sin cesar, pero no puedo entender por qué.

 renderItems = (items) => { let top3 = [] let tempArr = items let allNumbers = [] while (top3.length < 3){ allNumbers = [] for(let i = 0; i < tempArr.length; i++){ allNumbers = [...allNumbers, tempArr[i].hearts] } const result = tempArr.filter(i => i.hearts === Math.max(...allNumbers)) top3 = [...top3, ...result] let countOfdeleted = 0 for(let i = 0; i < result.length; i++){ tempArr.splice(result[i].id-countOfdeleted, 1) countOfdeleted++ } for(let i = 0; i < tempArr.length; i++){ tempArr[i].id = i } } console.log(top3); }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Esta respuesta se basa en la suposición de que 'elementos' es una matriz de objetos y que cada objeto en 'elementos' tendrá al menos 2 accesorios, a saber, 'id' y 'corazones'.

Además, no hay claridad sobre el significado de 'countOfdeleted' y 'tempArr'. Por lo tanto, se supone

  1. que uno necesita saber cuántos elementos de la matriz 'elementos' no se incluyeron (en el top3) como 'countOfdeleted'
  2. que los objetos restantes necesitan tener su 'id' actualizado (basado en el índice)

Con los supuestos antes mencionados, a continuación se debe implementar la lógica requerida:

 const items = [ { id: 0, hearts: 5 }, { id: 1, hearts: 4 }, { id: 2, hearts: 5 }, { id: 3, hearts: 3 }, { id: 4, hearts: 5 }, { id: 5, hearts: 2 }, { id: 6, hearts: 2 }, { id: 7, hearts: 1 }, { id: 8, hearts: 4 } ]; const getTop3 = (arr = items) => { const maxVal = arr.reduce((fin, itm) => itm.hearts > fin ? itm.hearts : fin, 0); const topAll = arr.filter(obj => obj.hearts === maxVal); const sansTop3 = arr .filter(obj => obj.hearts !== maxVal) .map((obj, idx) => ({...obj, id: idx})); console.log('countOfDeleted: ', arr.length - (topAll.length > 3 ? topAll.length : 3)); console.log('rest with updated-id (tempArr): ', sansTop3); return topAll.length > 3 ? topAll.slice(0, 3) : [...topAll]; }; console.log('\ntop3:\n^^^^\n', getTop3());

Enfoque / Explicación

  1. Encuentre el 'valor máximo' (maxVal) basado en la propiedad ('corazones')
  2. Encuentre todos los objetos que tienen los accesorios que coinciden con maxVal (almacenados en la matriz 'topAll')
  3. [Opcional: Reúna los elementos 'elementos' restantes y actualice su 'id' en la matriz 'sansTop3', para que coincida con el 'tempArr' en la pregunta]
  4. [Opcional: determine la cantidad de 'elementos' eliminados, para que coincida con el recuento de eliminados en la pregunta]
  5. Si más de 3 elementos tienen accesorios ('corazón') que coinciden con 'maxVal', devuelve solo 3; de lo contrario, devuelva todos los elementos de valor superior
about 4 years ago · Juan Pablo Isaza 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