如何使用模数运算符创建重复 'A A B B' 模式
How can I create a repeating 'A A B B' pattern with the modulus operator
我正试图优雅地解决这个问题,但我想我只是把自己弄糊涂了。对于任意长度和内容的数组输入(例如,[0,1,2,3,4,5,...]
),我希望输出为:
[
{ slide: 0, style: 'A' },
{ slide: 1, style: 'A' },
{ slide: 2, style: 'B' },
{ slide: 3, style: 'B' },
{ slide: 4, style: 'A' },
{ slide: 5, style: 'A' },
{ slide: 6, style: 'B' },
{ slide: 7, style: 'B' },
{ slide: 8, style: 'A' },
{ slide: 9, style: 'A' },
{ slide: 10, style: 'B' },
{ slide: 11, style: 'B' },
...
]
所以只重复了 A A B B
模式。
这是我试过的方法,但它似乎在几次迭代后就崩溃了。
const slides = [...Array(24).keys()];
const getStyleForIndex = (index) => {
if ((index) % 4 === 0 || (index) % 5 === 0 || index === 1) {
return 'A';
}
return 'B';
};
const newSlides = slides.map((slide, index) => ({ slide: slide, style: getStyleForIndex(index) }));
console.log(newSlides);
如果您能帮助解决模数运算符问题,我们将不胜感激!
您应该在这两种情况下使用 index % 4
,而不是 index % 5
。 returns 循环通过 0, 1, 2, 3
的数字序列。
if (index % 4 == 0 || index % 4 == 1) {
return 'A';
} else {
return 'B';
}
或更简单地说:
return index % 4 < 2 ? 'A' : 'B';
您可以通过移位和检查奇数来采用不同的方法。
shifting取数除以2(因为顺序相同的两个值)取整数值,下一个检查是检查组。
var i = 0;
while (i < 10) {
console.log(i, i >> 1 & 1 ? 'B' : 'A');
i++;
}
.as-console-wrapper { max-height: 100% !important; top: 0; }
我正试图优雅地解决这个问题,但我想我只是把自己弄糊涂了。对于任意长度和内容的数组输入(例如,[0,1,2,3,4,5,...]
),我希望输出为:
[
{ slide: 0, style: 'A' },
{ slide: 1, style: 'A' },
{ slide: 2, style: 'B' },
{ slide: 3, style: 'B' },
{ slide: 4, style: 'A' },
{ slide: 5, style: 'A' },
{ slide: 6, style: 'B' },
{ slide: 7, style: 'B' },
{ slide: 8, style: 'A' },
{ slide: 9, style: 'A' },
{ slide: 10, style: 'B' },
{ slide: 11, style: 'B' },
...
]
所以只重复了 A A B B
模式。
这是我试过的方法,但它似乎在几次迭代后就崩溃了。
const slides = [...Array(24).keys()];
const getStyleForIndex = (index) => {
if ((index) % 4 === 0 || (index) % 5 === 0 || index === 1) {
return 'A';
}
return 'B';
};
const newSlides = slides.map((slide, index) => ({ slide: slide, style: getStyleForIndex(index) }));
console.log(newSlides);
如果您能帮助解决模数运算符问题,我们将不胜感激!
您应该在这两种情况下使用 index % 4
,而不是 index % 5
。 returns 循环通过 0, 1, 2, 3
的数字序列。
if (index % 4 == 0 || index % 4 == 1) {
return 'A';
} else {
return 'B';
}
或更简单地说:
return index % 4 < 2 ? 'A' : 'B';
您可以通过移位和检查奇数来采用不同的方法。
shifting取数除以2(因为顺序相同的两个值)取整数值,下一个检查是检查组。
var i = 0;
while (i < 10) {
console.log(i, i >> 1 & 1 ? 'B' : 'A');
i++;
}
.as-console-wrapper { max-height: 100% !important; top: 0; }