Tengo datos dentro de mi matriz, que se ve así.
const arr = [ { devSth: { h1: [1], h2: [1], } }, ];
Tengo una función que debería modificar esta matriz. Se parece a esto:
const modifyArr = (data) => { data.forEach(el => { let keys = el.devSth && Object.keys(el.devSth); keys.forEach(key => { el.devSth[key].map(el => { return { name: el, val: 'lalala' } }) }) }) return data; }
Entonces estoy usando mi función:
const newArr = modifyArr(arr); console.log(newArr);
Rendimiento esperado:
[{ devSth: { h1: [{name: 1, val: 'lalala'}], h2: [{name: 1, val: 'lalala'}] } }]
Salida real:
[{ devSth: { h1: [1], h2: [1] } }]
Agradecería cualquier ayuda.
está asignando los valores, pero no los está configurando (línea 5):
const modifyArr = (data) => { data.forEach(el => { let keys = el.devSth && Object.keys(el.devSth); keys.forEach(key => { el.devSth[key] = el.devSth[key].map(el => { return { name: el, val: 'lalala' } }) }) }) return data; }esto no está probado.
No vuelve a asignar el resultado de la operación .map a las teclas originales h1 y h2 . Así que no los modifica.
solo cambia
el.devSth[key].map(el => { return { name: el, val: 'lalala' } })a
el.devSth[key] = el.devSth[key].map(el => { return { name: el, val: 'lalala' } const arr = [{ devSth: { h1: [1], h2: [1], } }, ]; const modifyArr = (data) => { data.forEach(el => { let keys = el.devSth && Object.keys(el.devSth); keys.forEach(key => { el.devSth[key] = el.devSth[key].map(el => { return { name: el, val: 'lalala' } }) }) }) return data; } const newArr = modifyArr(arr); console.log(newArr);Una forma alternativa de hacerlo:
const arr = [{ devSth: {h1: [1], h2: [1]} }]; let obj = arr[0].devSth, number; for (const prop in obj){ number = obj[prop][0]; obj[prop] = [{name: number, val: 'lalala'}]; } console.log([{devSth: obj}])