我有对象数组,其中对象看起来像这样(值更改):
{
stats: {
hp: 2,
mp: 0,
defence: 4,
agility: 11,
speed: 6,
strength: 31
}
}
我想按速度降序排列它们:
array.sort((a, b) => {
return b.stats.speed - a.stats.speed
})
但是我收到了这个错误,我无法真正理解发生了什么:
类型错误:无法分配给对象“[对象数组]”的只读属性“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
})
}
原文由 MazMat 发布,翻译遵循 CC BY-SA 4.0 许可协议
因为数组在 strict mode 中被 冻结,所以你需要在排序之前复制数组: