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

111
Views
Cómo iterar a través de esta matriz aplicando un aumento decimal

Tengo una lista que tiene una columna Id. Cuando un usuario agrega un elemento, comienza con 3.1 y continúa con 3.2, 3.3, 3.4 a medida que se agrega cada elemento.

El problema: si un usuario elimina, por ejemplo, 3.3 en una lista de hasta 3.7, el orden de estas identificaciones no será secuencial. Estoy intentando con lo siguiente iterar a través de los Id para reordenarlos, comenzando con 3.1 para la fila superior de la lista.

Aquí está la función de eliminación:

 const deleteItem = () => { const currentArray = myArr; for (var i = 0; i < currentArray .length; i++) { if (currentArray [i] == selectedItem) { currentArray .splice(i, 1); } setMyArr([...currentArray ]); } for(var i = 3.1; i < currentArray .length; i++){ i + 0.1; } };

El primero for , elimina el elemento y establece la matriz de elementos, for segundo es mi intento de restablecer el orden de los Id.

He buscado varias soluciones en SO pero no las he encontrado útiles.

¿Cómo haría esto?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puede filtrar el elemento que desea eliminar y luego establecer nuevamente las identificaciones de esta manera:

 currentArray .filter(item => item !== selectedItem) // Remove the selectedItem from the array .map((item, idx) =>({...item, id:3.1 + index * 0.1}) // Reset the ids sequentially
about 4 years ago · Juan Pablo Isaza Report

0

Los índices y la longitud de la matriz no funcionarán con valores decimales.

Lo que creo que quieres hacer es iterar la matriz y establecer la identificación en función de la identificación de la primera:

 const finalArray = currentArray.map((item,index)=> ({...item, id:3.1 + index * 0.1});

como se indica en los comentarios al index * 0.1 está sujeto a errores de redondeo, por lo que debe aplicar sus redondeos.

(Supongo que sus artículos son objetos y tienen un atributo de identificación)

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!