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

214
Vistas
Calcular porcentaje completado

Tengo una variedad de diferentes estados de progreso y el estado actual. Quiero poder mostrar el porcentaje completado. Hasta ahora tengo esto:

 getCompletedPercentage(): Status | undefined | number { const index = this.statuses.findIndex(status => status.id === this.currentStatus?.id) const percentage = 100 * (index / this.statuses.length) return percentage },

this.statuses es una matriz de los diferentes estados posibles (todos ellos también tienen id's a partir de 1). this.currentStatus es el estado actual, por supuesto :)

Entonces, digamos que la matriz de estados tiene 6 estados diferentes y el estado actual es 3, quiero poder mostrar el 50% completado. Con el cálculo anterior, no obtengo el 100% cuando el estado actual es el último estado. Comienza en 0 en el primero y luego aumenta, pero todavía es solo 85 cuando estoy en el último. Probablemente sea algo fácil que me estoy perdiendo, pero no puedo resolverlo :)

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Los índices de matriz están basados en cero. Entonces, el valor más alto para el index es 5 (para una matriz de 6 elementos). Modifica tu código así:

 getCompletedPercentage(): Status | undefined | number { const index = this.statuses.findIndex(status => status.id === this.currentStatus?.id) const percentage = 100 * index / (this.statuses.length - 1) return percentage }

Una advertencia que debe tener en cuenta es que esto genera problemas si la longitud de la matriz es uno o menos, obtendrá resultados inconsistentes. Entonces podría intentar: const percentage = 100 * index / Math.max(this.statuses.length - 1, 1)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede lograr el requisito con esta lógica simple. En lugar de index , puede usar el status ID ya que comienza desde 1 .

 // Input statuses array let statuses = [{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}, {id: 6}]; // current status obect const currentStatus = {id: 3}; // filtered object by using array.find() method to get the current status id. const filteredObjId = statuses.find(status => status.id === currentStatus.id).id; // Calculating the percentage const percentage = 100 * (filteredObjId / statuses.length) // Result console.log(percentage);

Acabo de agregar el fragmento de código JavaScript solo para mostrar la demostración. Puede usar la misma lógica en su código mecanografiado.

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