有一个非常常见且简单的任务是在两个方向上通过某个范围进行循环迭代:
var currentIndex = 0;
var range = ['a', 'b', 'c', 'd', 'e', 'f'];
function getNextItem(direction) {
currentIndex += direction;
if (currentIndex >= range.length) { currentIndex = 0; }
if (currentIndex < 0) { currentIndex = range.length-1; }
return range[currentIndex];
}
// get next "right" item
console.log(getNextItem(1));
// get next "left" item
console.log(getNextItem(-1));
上面的代码运行完美,但我花了大约一个小时试图摆脱双重if
检查。
有没有办法解决如果没有如果?也许是一句话?
要将两个 if
s 转换为一个无条件语句,您可以将 range.length
添加到 currentIndex
中,然后使用 modulo:
var currentIndex = 0;
var range = ['a','b','c','d','e','f'];
function getNextItem(direction) {
currentIndex = (currentIndex + direction + range.length) % range.length;
return range[currentIndex];
}
// get next "right" item
console.log(getNextItem(1));
console.log(getNextItem(1));
// get next "left" item
console.log(getNextItem(-1));
console.log(getNextItem(-1));
console.log(getNextItem(-1));
console.log(getNextItem(4));
console.log(getNextItem(1));
console.log(getNextItem(1));
console.log(getNextItem(1));
我目前正在学习数据结构考试,遇到了一个关于迭代的问题。 在单链表上实现双向迭代器是可能的吗?如果是的话,如何实施呢? 我有一个想法,首先向前遍历链表,并存储一个临时链表,该临时链表保存反向的节点。但是遍历这个临时列表将导致一个只允许向后遍历的迭代器。
问题 你想反方向迭代一个序列 解决方案 使用内置的 reversed() 函数,比如: >>> a = [1, 2, 3, 4] >>> for x in reversed(a): ... print(x) ... 4 3 2 1 反向迭代仅仅当对象的大小可预先确定或者对象实现了 __reversed__() 的特殊方法时才能生效。 如果两者都不符合,那你必须先将对象转换为一个列表才行,比
问题内容: 如何从最后一项到第一个迭代一个项目? 问题答案: 如果要继续使用集合,可以使用以下方法: 如果您可以改用数组,则可以看一下answer。
本文向大家介绍C++ 向量迭代器,包括了C++ 向量迭代器的使用技巧和注意事项,需要的朋友参考一下 示例 begin将an返回iterator到序列容器中的第一个元素。 end返回iterator末尾的第一个元素。 如果矢量对象const,无论是begin和end返回const_iterator。如果const_iterator即使向量不返回,也要返回const,则可以使用cbegin和cend。
问题内容: Swift 2.2可以实现以下功能: 使用3.0,我们会收到以下错误: 类型“范围”(又名“范围”)不符合协议“序列” 我正在尝试对字符串进行快速的非常简单的操作-只需遍历字符串的前半部分(或更常见的问题:遍历字符串的范围)。 我可以执行以下操作: 但是这里我并没有真正遍历字符串。所以问题是:如何遍历给定字符串的范围。喜欢: 问题答案: 您可以使用以下属性来遍历字符串: 从“ 字符串和
问题内容: 我想知道为什么在 i 变量下面的代码中 仍然显示“ 5” 而不是显示 “ 1” 然后 “ 2” 然后 “ 3” ,依此类推?必须是一个范围问题,但由于在全局和dom范围中更改了i变量的范围,但仍然遇到相同的问题,因此我并没有真正了解它。当我提醒 我 的AJAX功能外,它工作得很好。 这是小提琴 编辑: 我选择了 @Tushar Gupta 解决方案,因为它最适合我的需要,但是又遇到了另