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

492
Visualizações
Vue3js: ¿cómo recorrer la matriz exactamente 5 veces y verificar condicionalmente los elementos dentro?

tenga en cuenta que pasé las últimas 2 horas buscando en temas similares de SO para llegar a una solución, pero fallé. Por eso te pido ahora ayuda.

Estoy tratando de lograr lo siguiente:

Tengo un marcador con algunos resultados, que debería verse así:

  • John Doe 100 puntos
  • John Smith 50 puntos
  • Sin nombre
  • Sin nombre
  • Sin nombre

Tengo una matriz para esto llamada scoreBoardArray .

 data() { return { scoreBoardArray: [ { id: '1', name: 'John Doe', pts: 100 }, { id: '2', name: 'John Smith', pts: 50 }, ], } },

Puedo recorrerlo, pero no lo hago exactamente 5 veces y escupo "Sin nombre", cuando no se encuentra ningún registro.

Mi código (y mis intentos de resolver el problema):

 <ul> <li v-for="item in scoreBoardArray" :key="item.id"> <span v-if="item.id">{{ item.name }} {{ item.pts }}</span> <span v-if="!item.id">No Name</span </li> </ul>

por supuesto, he tratado de resolver el problema con el uso de una propiedad computed y un bucle simple for(let i=0; i<6; i++) {...} pero de alguna manera no puedo hacerlo funcionar.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Claro, esto es algo que podría lograr con una propiedad calculada.

Intente simplemente agregar algunos objetos vacíos al final de su matriz para completarla con 5 valores.

 computed: { scoreboard() { let append = [] const appendCount = 5 - this.scoreBoardArray for (let i = 0; i < appendCount; i++) { append[i] = {} } return [...this.scoreBoardArray, ...append] } }

Pero dado que estos objetos están vacíos, encontrará problemas con las teclas de bucle v-for . Para solucionarlo, podría usar índices como claves:

 <li v-for="(item, index) in scoreboard" :key="index">
about 4 years ago · Juan Pablo Isaza Relatório

0

Podría usar una propiedad calculada para dividir los primeros 5 elementos en scoreBoardArray scoreBoardArray[] y obtener la cantidad de elementos ficticios "No Name" necesarios (llamados topScores y dummyLength , respectivamente):

 export default { computed: { topScores() { return this.scoreBoardArray .slice() // create a copy .sort((a,b) => b.pts - a.pts) // sort by points .slice(0, 5) // first 5 }, dummyLength() { return Math.max(0, 5 - this.topScores.length) } } }

Y actualice la plantilla para representar los accesorios calculados en un v-for , representando los elementos topScores y luego los elementos ficticios dummyLength :

 <ul> <li v-for="item in topScores" :key="item.id"> <span>{{ item.name }} ({{ item.pts }})</span> </li> <li v-for="n in dummyLength">No Name</li> </ul>

manifestación

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