【发布时间】:2016-01-31 08:41:27
【问题描述】:
这是一个 toggle 有 2 个或更多项目,需要选择下一个项目,以便依次选择所有值。
这个特定关联数组中的索引是唯一的,它们的数量是可变的(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)
}
}
【问题讨论】:
-
'new' 是 JavaScript 中的保留字,不能作为变量使用。
-
请添加
strings的内容。 -
例如(但其实没关系,可以改变,只要至少有2个条目即可;内容可以是任意对象):strings = {'a':' A','b':'B','c':'C'}
-
请添加一些示例,而对象属性没有顺序应该如何获取“下一个”项目。
-
解决方案是我的代码假设当对象没有改变时,for-in 枚举索引的顺序不会改变。我相当肯定它是可以信赖的,但从规格的角度来看,当然不能保证。一个更长更麻烦的解决方案可能会采用所有索引的一次性数组,然后循环遍历该数组,以它们的数量为模递增索引。这可能更清晰。
标签: javascript associative-array