这是具有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;

09-26 03:50