Tengo una función que necesita extender una matriz de javascript, incluido un nuevo atributo llamado selected :
export const initSelect = (data) => { let newData = data.concat(); newData.map((item) => { item.selected = false; }) return newData; } data es un valor de estado de ReactJS (proviene de this.state.data cuando se llama a la función), pero esto no parece ser un problema ya que newData es una nueva copia de la matriz de data ...
Recibo el siguiente error:
TypeError: Cannot add property selected, object is not extensibleProbablemente necesites copiar los objetos:
export const initSelect = (data) => { return data.map((item) => ({ ...item, selected: false })); }No puede extender el item con la propiedad selected , y su matriz es solo una copia superficial.
Si desea poder extender, tendrá que hacer una copia profunda de su matriz. Puede ser suficiente con:
let newData = data.map((item) => Object.assign({}, item, {selected:false}) )data = JSON.parse(JSON.stringify(data)));