我有一个包含 26 个字母的数组,我想
pop
最后一个字母和 unshift
到同一个数组。这样做的目的是创建一个旋转阵列来模拟恩尼格机中的转子“步进”时的情况。
我的密码工作正常,并且有一种使用
useState
将数组重置为其原始配置的方法,但是当涉及到pop
和unshift
时,我遇到了问题,我知道反应不喜欢数组操作的破坏性方法。所以我正在尝试找出如何在 useState
函数中模仿这些反应。
我在没有任何帮助的情况下尝试了
pop
和unshift
,所以切换到setState
,如下所示:
setRotar1((prevArray) => {
const lastLetter = prevArray.pop();
return [lastLetter, ...prevArray];
});
但是,当检查控制台日志时,新数组将返回第 0 个索引处的倒数第二个字母。日志还完全删除了原来的最后一个字母。
i.e. [a, b, c, d, e, f]
should return [f, a, b, c, d, e]
actually returns [e, a, b, c, d]
我确信 setRotar1 函数的工作方式存在问题,但作为反应新手,我不确定如何正确管理它。如果以前有过类似的问题,我深表歉意,但我似乎找不到解决方案。