programing

개체 배열에 대한 새 특성을 생성할 때 개체를 확장할 수 없는 오류

prostudy 2022. 3. 8. 22:13
반응형

개체 배열에 대한 새 특성을 생성할 때 개체를 확장할 수 없는 오류

나는 Javascript 배열을 확장해야 하는 기능이 있는데, 여기에는 새로운 속성인 Javascript 배열이 포함된다.selected:

export const initSelect = (data) => {

    let newData = data.concat();
    newData.map((item) => {
        item.selected = false;
    })

    return newData;
}

data반응이다JS 상태 값(에서 얻음)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})
)
data = JSON.parse(JSON.stringify(data)));

const newObj = Object.assign({selected: false}, data);

참조URL: https://stackoverflow.com/questions/45798885/object-is-not-extensible-error-when-creating-new-attribute-for-array-of-objects

반응형