Estoy tratando de cambiar el valor de un objeto que está en una matriz anidada en un objeto. Ni siquiera sé si expliqué cómo está anidado lo suficientemente bien ...
esto es lo que parece
{ household and furniture: [{…}, {…}], school stuffs: [{…}, {…}] }entonces, traté de mapearlo y obtuve mi código para que se viera así ahora ...
{ 0: {school stuffs: [{…}, {…}]}, 1: {household and furniture:[{…}, {…}]} }¿Cómo hago para que los datos se vean exactamente como eran inicialmente (sin el 0 y el 1 como teclas) después de editar el campo?
aquí está el código que usé para editar el campo
const checkAll = e => { const newArray = Object.keys(productArray).map(elem => { return {[elem]: productArray[elem].map(innerElem => { return { ...innerElem, completed: e.target.checked } }) } }) console.log({...newArray}) setProductArray(newArray) }Está utilizando un map que esencialmente devuelve un Array y está esperando un Object . Cuando se propaga usando {...newArray} , se propaga la matriz usando los índices como claves para el objeto resultante, por lo tanto, el 0 y el 1 . Idealmente, puede usar un reduce para devolver un objeto y usarlo directamente.
const checkAll = e => { const obj = Object.keys(productArray).reduce((acc, curr) => { acc[curr] = [...productArray[curr].map(item => ({...item, completed: e.target.checked})); return acc; }, {}); console.log(obj); setProductArray(obj) }Puedes hacerlo en una sola línea:
const obj ={household and furniture: [{…}, {…}],school stuffs:[{…},{…}] } let flatObj = Object.values(obj).reduce((acc, curr) => ({ ...acc, ...curr }), {});¿Puedes hacer algo así?
const example = { hello : {name : "kareem"} , example : [1,2] } const converter = (inp)=>{ return Object.assign({},Object.keys(inp).map(key=> {return {[key] : inp[key]}})) } console.log(converter(example))