Mi requisito es el siguiente
formación:
0:{name: 'test', qty: 3} 1:{name: 'test2', qty: 2}Quiero dividir los elementos de la matriz en función de la cantidad, por ejemplo.
0:{name: 'test', qty: 1} 1:{name: 'test', qty: 1} 2:{name: 'test', qty: 1} 3:{name: 'test2', qty: 1} 4:{name: 'test2', qty: 1}estoy haciendo esto
let data = this.orders; let returndata=[]; for( let i=0; i< data.length; i++){ const qty= data[i].qty; const order = data[i]; for(let j=0; j<qty;j++){ order.qty=1; returndata.push(order); } }Funciona bien, pero cuando lo muestro en la cuadrícula en angular e ingreso el valor en uno de los cuadros de texto de la fila, el mismo valor se refleja en las otras filas del mismo nombre.
Creo que se debe a que las filas tienen los mismos datos, por eso reflejan los mismos datos en cada cuadro de entrada del mismo nombre.
Mi solución fue dar un sno único. a cada elemento relativo
for(let j=0; j<qty;j++){ order.qty=1; order.sno=j+1;//tried this returndata.push(order); }pero esto está funcionando raro ahora que cada fila relativa tiene el mismo sno. por ej. La segunda pulsación anula el primer elemento sno con 2. como se muestra a continuación
0:{name: 'test',sno=3, qty: 1} 1:{name: 'test',sno=3, qty: 1} 2:{name: 'test',sno=3, qty: 1} 3:{name: 'test2',sno=2, qty: 1} 4:{name: 'test2',sno=2, qty: 1}Por favor, comprenda mi problema y proporcione entradas.
Esto es en realidad un problema de copia por referencia . Tu código funcionará si haces esto: returndata.push({...order}); Esto significa que está creando un nuevo objeto que no tiene referencia al objeto en la matriz de pedidos. Si su versión de angular no admite la sintaxis extendida , siempre puede hacerlo usando Object.create , así: returndata.push(Object.create(order));