Ответ 1
Вероятно, вам нужно скопировать объекты:
export const initSelect = (data) => {
return data.map((item) => ({
...item,
selected: false
}));
}
У меня есть функция, которая должна расширять массив javascript, включая новый атрибут selected
:
export const initSelect = (data) => {
let newData = data.concat();
newData.map((item) => {
item.selected = false;
})
return newData;
}
data
является значением состояния ReactJS (берется из this.state.data
при вызове функции), но это, похоже, не является проблемой, поскольку newData
является новой копией массива data
...
Я получаю следующую ошибку:
TypeError: Cannot add property selected, object is not extensible
Вероятно, вам нужно скопировать объекты:
export const initSelect = (data) => {
return data.map((item) => ({
...item,
selected: false
}));
}
Вы не можете расширить item
с помощью свойства selected
, и ваш массив будет только мелкой копией.
Если вы хотите расширить, вам придется сделать глубокую копию вашего массива. Этого может быть достаточно:
let newData = data.map((item) =>
Object.assign({}, item, {selected:false})
)
const newObj = Object.assign({selected: false}, data);