Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

494
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda