Creé una función para ordenar la misma cantidad y luego asignarla al valor asignado para ese mes, lo siento, suena extraño cuando se escribe.
Pero cada vez que lo ejecuto, el subarreglo que se está actualizando muestra los mismos datos en todos ellos:
this.calcTest([ { id: '001', name: 'First', arrOfStuff: [{ period: '2022-01-01', value: 10 },{ period: '2022-02-01', value: 10 }]}, { id: '002', name: 'Second', arrOfStuff: [{ period: '2022-01-01', value: 11.11 }]}, { id: '003', name: 'Third', arrOfStuff: [{ period: '2022-01-01', value: 12.12 },{ period: '2022-02-01', value: 9.99 }]}, { id: '004', name: 'Fourth', arrOfStuff: [{ period: '2022-01-01', value: 13.13 }] }]); calcTest(d: any) { const testData = []; const periods = [ { period: '2022-01-01', value: '' }, { period: '2022-02-01', value: '' }, ]; d.map((f, indexCheck) => { let tempArr = f.arrOfStuff; f.arrOfStuff = periods; tempArr.map((t) => { let i = f.arrOfStuff.findIndex((as) => as.period === t.period); f.arrOfStuff[i].value = t.value; }); f.check = indexCheck; testData.push(f); }); console.log(testData); }esto resulta con:
[{ id: '001', nombre: 'Primero', arrOfStuff: [{ período: '2022-01-01', valor: 13.33 },{ período: '2022-02-01', valor: 9.99 }], verificación: 0}, { id: '002', nombre: 'Segundo', arrOfStuff: [{ período: '2022-01-01', valor: 13.33 }, { período: '2022-02-01', valor: 9.99 }], verificación: 1}, { id: '003', nombre: 'Tercero', arrOfStuff: [{ período: '2022-01-01', valor: 13.33 },{ período: '2022-02-01 ', valor: 9.99 }], verificación: 3}, { id: '004', nombre: 'Cuarto', arrOfStuff: [{ período: '2022-01-01', valor: 13.33 },{ período: '2022 -02-01', valor: 9,99 }], verificación: 4}]
Me gustaría que resulte en:
[{ id: '001', nombre: 'Primero', arrOfStuff: [{ período: '2022-01-01', valor: 10 },{ período: '2022-02-01', valor: 10 }], verificación: 0}, { id: '002', nombre: 'Segundo', arrOfStuff: [{ período: '2022-01-01', valor: 11.11 }, { período: '2022-02-01', valor: '' }], verificación: 1}, { id: '003', nombre: 'Tercero', arrOfStuff: [{ período: '2022-01-01', valor: 12.12 },{ período: '2022-02- 01', valor: 9.99 }], verificación: 3}, { id: '004', nombre: 'Cuarto', arrOfStuff: [{ período: '2022-01-01', valor: 13.33 },{ período: ' 2022-02-01', valor: '' }], verificación: 4}]
Lo resolví con este código:
calcTest(d: any) { const periods = JSON.stringify([ { period: '2022-01-01', value: '' }, { period: '2022-02-01', value: '' }, ]); d.map((f, indexCheck) => { let tempArr = f.arrOfStuff; f.arrOfStuff = JSON.parse(periods); tempArr.map((t) => { let i = f.arrOfStuff.findIndex((as) => as.period === t.period); f.arrOfStuff[i].value = t.value; }); f.check = indexCheck; }); console.log(d); }He tenido este problema antes y tiene algo que ver con la asignación de memoria, por lo que debe colocar el objeto en la memoria como una cadena y luego analizarlo nuevamente para usarlo como un objeto.