admin管理员组文章数量:1135124
I have a function that needs to extend a javascript array, including a new attribute called selected
:
export const initSelect = (data) => {
let newData = data.concat();
newData.map((item) => {
item.selected = false;
})
return newData;
}
data
is a ReactJS state value (comes from this.state.data
when calling the function), but this didn't seem to be a problem as newData
is a new copy of data
array...
I'm getting the following error:
TypeError: Cannot add property selected, object is not extensible
I have a function that needs to extend a javascript array, including a new attribute called selected
:
export const initSelect = (data) => {
let newData = data.concat();
newData.map((item) => {
item.selected = false;
})
return newData;
}
data
is a ReactJS state value (comes from this.state.data
when calling the function), but this didn't seem to be a problem as newData
is a new copy of data
array...
I'm getting the following error:
TypeError: Cannot add property selected, object is not extensible
Share
Improve this question
edited Sep 20, 2019 at 16:05
CommunityBot
11 silver badge
asked Aug 21, 2017 at 13:52
MendesMendes
18.4k38 gold badges164 silver badges281 bronze badges
1
- 7 In order to really understand this error this here developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… might help. – Elmar Zander Commented Aug 21, 2020 at 9:18
4 Answers
Reset to default 141You probably need to copy the objects:
export const initSelect = (data) => {
return data.map((item) => ({
...item,
selected: false
}));
}
You can not extend item
with selected
property, and your array is just a shallow copy.
If you want to be able to extend, you will have to do a deep copy of your array. It may be enough with:
let newData = data.map((item) =>
Object.assign({}, item, {selected:false})
)
data = JSON.parse(JSON.stringify(data));
As of 2024 use:
structuredClone(value, options)
https://developer.mozilla.org/en-US/docs/Web/API/Window/structuredClone
const newObj = Object.assign({selected: false}, data);
版权声明:本文标题:javascript - Object is not extensible error when creating new attribute for array of objects - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736907702a1956037.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论