我是React的新手,所以可能有更简单的方法来做到这一点。
但我有一份清单
const NOTES = [
{ id: 0, val: "C" },
{ id: 1, val: "C#" },
{ id: 2, val: "D" },
{ id: 3, val: "D#" },
{ id: 4, val: "E" },
{ id: 5, val: "F" },
{ id: 6, val: "F#" },
{ id: 7, val: "G" },
{ id: 8, val: "G#" },
{ id: 9, val: "A" },
{ id: 10, val: "A#" },
{ id: 11, val: "B" },
];
要求是用户将给予要显示的多个注解。例如,如果用户给出14,您将显示
C, C#, D, D#, E, F, F#, G, G#, A, A#, B, C, C#
我现在有这个
const keys = [...Array(13).keys()];
console.log("keys: ", keys);
return (
<div>
{keys.map((item) => (
<div key={item}>{NOTES[item].val}</div>
))}
</div>
);
但是因为List中只有12个元素,我得到一个错误。有没有什么方法可以使它在到达List中的最后一个元素时,我回到第一个元素并继续'n'次?
4条答案
按热度按时间bhmjp9jg1#
而不是使用keys.map
您可以创建一个函数
此函数将接收一个参数(在本例中,您需要注解的次数为14)
然后在func中声明NOTES数组
在0中设置计数器(let变量)
设置一个空数组,您将在该数组之后填充info
定义一个从0到您定义的参数的for循环
Inside for do an array.push示例:myArray.push(NOTES[counter])
执行计数器++如果计数器为11,则再次将其设置为0
然后在for循环外部返回数组
然后将www.example.com替换keys.map为myFunc(16).map
每个项目都将是您要查找的数组
希望这能帮助你找到正确的解决方案
jtjikinw2#
如果有人像我一样愚蠢,尤尔根的解决方案是可行的。
我在过去的错误,由于现在给我的数组的类型。
所以完整的解决方案应该是这样的
lx0bsm1f3#
你可以使用modulo循环回到数组的开头:
zphenhs44#
正如于尔根已经提到的,下面也做了同样的事情: