Estoy tratando de copiar en profundidad una serie de objetos, pero no funciona. Estoy usando React, pero aquí el problema es JavaScript puro.
const [selected, setSelected] = useState(value);El valor es el valor del componente principal.
const onClickFunction = (arr) => { const newClonedArray = selected.map((a) => ({ ...a })); // try to clone selected array // i am also try with // let clonedArray = JSON.parse(JSON.stringify(selected)) // also no work const result = intersectionBy(arr, newClonedArray, "id"); // here return only common items from two array using lodash library setSelected(result); console.log('selected item right now should be changed', selected) // NO RESULT IS NOT CHANGED result.forEach((i) => { handleItemClick(i); // no important for now }); }Dentro de la función expliqué en detalle cuál era el problema.
¿Por qué la matriz no se copia en profundidad?
El estado seleccionado es una matriz como ->
[ { id : 1 , name: 'test' }, { id : 2 , name: 'test 2' } ]después de la copia profunda, necesito cambiar la matriz seleccionada para que sea como ->
[ { id : 1 , name: 'test' , title : 'title 1 ' }, { id : 2 , name: 'test 2' , title : 'title 2 ' } ]solo quiero copiar algunos valores de alguna cadena.
Debe usar Object.assign o JSON.stringify con JSON.parse
var selected = [ { id : 1 , name: 'test' }, { id : 2 , name: 'test 2' } ] var newArray = JSON.parse(JSON.stringify(selected)); //do whatever you want to on newArray newArray.map(a => a.title = a.name); console.log("selected",selected) console.log("newArray", newArray)