我目前正在扩展 Array.prototype 以包含一个简单的“指针”系统,因为我可以在几个不同的位置上移动而无需循环。
Array.prototype.current = 0;
该指针可以在数组中向前和向后移动,使用以下方法向前移动:
Array.prototype.next = function () {
return this[(this.current + 1) % this.length];
};
这行代码允许指针加一,除非到达最终索引,这种情况下如果再次增加,会返回到索引0而不是越界(因为取模的原因) .
但是,现在我想要完全相同,但是当减少指针时。这将创建类似的东西,即:
Array.prototype.prev = function () {
return this[(this.current - 1) /* similar to modulo here */];
};
我想要的是在任何正常情况下指针都会减1。但是,如果指针为 0,则需要返回到数组的最后一个索引,因此有效地反向循环。但是,我希望使用尽可能少的代码,例如用于增加指针但在到达末尾时将其循环回开始的模解决方案。
有没有像模数解决方案这样的速记解决方案?
编辑 响应重复标志。那里引用的问题和答案确实适用于我的问题,所以我理解标记。但是,它没有引用像本例这样向后循环列表并从前到后循环的情况(即没有分支)。在相当长的一段时间后,我没有遇到这个解决方案,所以我认为这个问题会给其他遇到像我这样的类似问题的人带来积极的影响。
最佳答案
你可以试试这个
Array.prototype.prev = function () {
return this[(this.current - 1 + this.length) % this.length]
};
关于javascript - 反向数组循环 - 当超过索引 0 时返回到最后一个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52259605/