Как исправить ошибку: Невозможно назначить только для чтения свойство 'room' объекта '[object Object]' - PullRequest
0 голосов
/ 04 августа 2020
    let data = [{
        name: 'juan',
        age: 16,
        room: {
            num: 1,
            section: { id: 1, name: 'emerald' }
        }
    },{
        name: 'cruz',
        age: 18,
        room: {
            num: 2
        }
    }];
    let section = { id: 1, name: 'emerald' };
 

    const index = data.findIndex((x) => {
          if (x.room['section']) {
            if (x.room['section'].id === section.id) {
              return true;
            }
            return false;
          }
        });
    
     const obj = { ...data[index].room };
        delete obj.section;
         data[index].room = obj; // Cannot assign to read only property 'room' of object '[object Object]'
    
    console.log(data);

Как исправить ошибку Cannot assign to read only property 'room' of object '[object Object]'.

после нажатия кнопки сохранения появляется ошибка и работает раздел удаления. но из строки data[index].room = obj; не работает. появится ошибка Cannot assign to read only property 'room' of object '[object Object]'

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Попробуйте это

let data = [
    {
      name: 'juan',
      age: 16,
      room: {
          num: 1,
          section: { id: 1, name: 'emerald' }
          }
    },
    {
      name: 'cruz',
      age: 18,
      room: {
          num: 2
      }
    }
];

const section = { id: 1, name: 'emerald' };

const index = data.findIndex((x)=>{
     if(x.room.section)
         if(x.room.section.id === section.id)
              return true
     return false
});

delete data[index].room.section
console.log(data)

Если каким-то образом приведенный выше код не решил вашу проблему, вы можете попробовать что-то вроде этого

let data = [
        {
          name: 'juan',
          age: 16,
          room: {
              num: 1,
              section: { id: 1, name: 'emerald' }
              }
        },
        {
          name: 'cruz',
          age: 18,
          room: {
              num: 2
          }
        }
    ];

const section = { id: 1, name: 'emerald' };

const newArray = data.map(x=>{
  if(x.room.section)
    if(x.room.section.id === section.id)
       delete x.room.section
   return x    
});
//or
const newArray2 = data.map(x=>{
  if(x.room.section)
    if(x.room.section.id === section.id)
       return {...x,room:{num:room.num}}
   return x    
});

console.log(newArray);
console.log(newArray2);
0 голосов
/ 04 августа 2020

Условие для получения индекса должно быть:

let index = data.findIndex(x => x.room?.section?.id === section.id);

let data = [{
    name: 'juan',
    age: 16,
    room: {
        num: 1,
        section: { id: 1, name: 'emerald' }
    }
},{
    name: 'cruz',
    age: 18,
    room: {
        num: 2,
    }
}];

let section = { id: 1, name: 'emerald' };


let index = data.findIndex(x => x.room?.section?.id === section.id);
console.log('Found at index: ' + index);

delete data[index].room.section

console.log('Updated data: ');
console.log(data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...