オブジェクトの配列をソート中にエラーが発生しました オブジェクト '[オブジェクト配列]' の読み取り専用プロパティ '2' に割り当てることができません 質問する

オブジェクトの配列をソート中にエラーが発生しました オブジェクト '[オブジェクト配列]' の読み取り専用プロパティ '2' に割り当てることができません 質問する

オブジェクトの配列があり、オブジェクトは次のようになります (値が変わります):

   {
     stats: {
        hp: 2,
        mp: 0,
        defence: 4,
        agility: 11,
        speed: 6,
        strength: 31
     }
   }

速度の降順で並べ替えるには、次のようにします。

  array.sort((a, b) => {
            return b.stats.speed - a.stats.speed
        })

しかし、このエラーが発生し、何が起こっているのかを実際に解読できません。

TypeError: オブジェクト '[オブジェクト配列]' の読み取り専用プロパティ '2' に割り当てることができません

何が足りないのでしょうか?

編集: Redux ストア内のオブジェクトの配列:

const enemyDefaultState = [
{
    name: 'European Boy1',
    stats: {
        hp: 2,
        mp: 0,
        defence: 4,
        agility: 11,
        speed: 6,
        strength: 31
    }
},
{
    name: 'European Boy2',
    stats: {
        hp: 2,
        mp: 0,
        defence: 4,
        agility: 4,
        speed: 2,
        strength: 31
    }
},
{
    name: 'European Boy3',
    stats: {
        hp: 2,
        mp: 0,
        defence: 4,
        agility: 7,
        speed: 7,
        strength: 31
    }
},

]

配列をインポートして変数に割り当てます。

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

ベストアンサー1

配列は凍った厳密モードソートする前に配列をコピーする必要があります。

array = array.slice().sort((a, b) => b.stats.speed - a.stats.speed)

おすすめ記事