var ZODIAC = ["RAT", "OX", "TIGER", "RABBIT", "DRAGON", "SNAKE", "HORSE", "SHEEP", "MONKEY", "ROOSTER", "DOG", "PIG"];
var STARTING_ZODIAC = "MONKEY";
Run Code Online (Sandbox Code Playgroud)
如何打印此数组中以猴子开头并以羊结尾的所有元素?
6 个答案,但没有一个使用对我来说显而易见的解决方案:
for (let i = 0; i < ZODIAC.length; i++) {
console.log(ZODIAC[(startIndex + i) % ZODIAC.length]);
}
Run Code Online (Sandbox Code Playgroud)
循环 12 次,并使用模运算符,这样我们就可以计算 4, 5, ... 10, 11, 0, 1, 2, 3。
您可以使用模运算符,以便您的索引变量在0达到ZODIAC数组长度时环绕到:
const ZODIAC = ["RAT", "OX", "TIGER", "RABBIT", "DRAGON", "SNAKE", "HORSE", "SHEEP", "MONKEY", "ROOSTER", "DOG", "PIG"];
const STARTING_ZODIAC = "MONKEY";
const startIndex = ZODIAC.indexOf(STARTING_ZODIAC);
console.log(STARTING_ZODIAC);
for (let i = startIndex + 1; i !== startIndex; i = (i + 1) % ZODIAC.length) {
console.log(ZODIAC[i]);
}Run Code Online (Sandbox Code Playgroud)
另一种方法是slice先将数组的两个部分按正确的顺序排列:
const ZODIAC = ["RAT", "OX", "TIGER", "RABBIT", "DRAGON", "SNAKE", "HORSE", "SHEEP", "MONKEY", "ROOSTER", "DOG", "PIG"];
const STARTING_ZODIAC = "MONKEY";
const startIndex = ZODIAC.indexOf(STARTING_ZODIAC);
[
...ZODIAC.slice(startIndex),
...ZODIAC.slice(0, startIndex)
].forEach(str => console.log(str));Run Code Online (Sandbox Code Playgroud)