这是具有2个或更多项目的toggle
,其中需要选择下一个项目,以便所有值都将被依次选择。
此特定关联数组中的索引是唯一的,它们的数量是可变的(2个或更多),并且没有原型元素。我知道旧索引,我想将新索引设置为找到的下一个索引(如果旧索引恰好是最后一个,则设置第一个)。
这是我想出的,但是我想知道是否有更优雅的方法。关联数组为strings
,旧索引为oldx
:
var i,
seen_oldx = 0,
newx = "";
for (i in strings) {
if (seen_oldx) {
newx = i; // index after oldx (not reached if oldx is last)
break; // found it, stop looking
}
else if (i === oldx)
seen_oldx = 1;
else if (!newx)
newx = i; // newx is the first (in case oldx is last)
}
}
最佳答案
如果不添加其他小的数据结构,似乎没有一个非常优雅的解决方案。我最终为字符串关联数组的所有索引添加了适当的数组:
for (var i in strings) i_strings.push(i);
然后代码就是:
newx = (oldx + 1) % i_strings.length;