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

255
Vistas
Cómo agregar los números faltantes con este código y solo hacerlo cuando una variable es 0 en angular 7

Lo que hace esta funcionalidad es que por cada prioridad reequilibrará el porcentaje (Participación) en partes iguales. El problema ocurre en casos impares, por ejemplo cuando hay 3 prioridades(Prioridad), debes dividir 100/3, lo que da como resultado 33 (y 33 + 33 + 33 = 99)

Que debo agregar a mi codigo, para que cuando el resultado de la division no sea 100, los numeros que faltan se sumen en la ultima posicion, completando el 100.

Problema de ejemplo 1: gif de ejemplo: la idea es que los últimos 33 que ves en el gif se transformen automáticamente en 34. Este es el código que tengo hasta ahora:

 rebalance(){ this.beneficiarios = this.beneficiarios.sort((a, b) =>Number(a.Prioridad) - Number(b.Prioridad)).map((val, i, beneficiarios) => { const priorityLenght = this.beneficiarios.filter((a) => Number(a.Prioridad) == Number(val.Prioridad)).map((b) => Number(b.Participacion)).length const arrObj = { ...val, Participacion : 100 / priorityLenght } return arrObj; }) }

Problema 2: En el gif anterior se puede ver que al apretar el boton se hizo el rebalanceo para todas las prioridades (Prioridad), me gustaria que fuera solo para las que tienen un 0 en porcentaje (Participacion)

Estoy bastante seguro de que ambos problemas se pueden resolver agregando un par de líneas de código a la función que puse arriba, pero me falta experiencia para saber qué hacer.

Aquí un StackBlizz del proyecto: https://stackblitz.com/edit/create-a-basic-angular-component-v8k1hs?file=src/app/example/user.component.ts

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

0

Arreglé tu algoritmo. Realmente solo necesitaba un enfoque ligeramente diferente. Lo cambié para usar Math.floor() para la participación y luego obtuve la diferencia (100 % de longitud) necesaria para hacer que el valor sea 100 % y lo agregué al último valor. Aquí está el stackblitz actualizado.

https://stackblitz.com/edit/create-a-basic-angular-component-7vj1rr?file=src/app/example/user.component.html

PD: nunca realice llamadas de método en la plantilla debido a la sobrecarga que esto agrega cada vez que se ejecuta la detección de cambios; en su lugar, use canalizaciones puras o calcule su valor para la presentación cuando cambien los datos. Se estaba llamando a un método de formato decimal que eliminé.

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