在对对象数组进行排序时出现错误 无法将对象 '[object Array]' 的只读属性 '2' 分配给其它值

6 浏览
0 Comments

在对对象数组进行排序时出现错误 无法将对象 '[object Array]' 的只读属性 '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: Cannot assign to read only property '2' of object '[object Array]'

我漏掉了什么吗?

编辑:

在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) {
            //按照速度属性排序
            enemies.sort((a, b) => {
                return b.stats.speed - a.stats.speed
            })
        }

0