Copy
let enemies = getState().enemy;
if (enemies) {
  enemies.sort((a, b) => {
    return b.stats.speed - a.stats.speed;
  });
}

이런식으로 배열을 직접 수정하려고 하는 경우 해당 에러가 발생한다.


해결 방법

  1. 배열을 잘랐다가 다시 합치기
Copy
array = array.slice().sort((a, b) => b.stats.speed - a.stats.speed);
  1. spread로 배열을 복사하여 수정하기
Copy
[...enemies].sort((a, b) => {
  return b.stats.speed - a.stats.speed;
});
  1. map 함수를 통해서 재생성
Copy
const tempOption = tempProduct.data.option.map((item, index) => {
  if (index !== arraynum) {
    return item;
  }
  return {
    ...item,
    [e.target.name]: e.target.value,
  };
});

출처

Uncaught TypeError: Cannot assign to read only propery ‘0’ of obejct ‘[object Array]’

Error while sorting array of objects Cannot assign to read only property ‘2’ of object ‘[object Array]’

Copy