Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

254
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!