这是一个包含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)
}
}
答案 0 :(得分:0)
看起来你正在描述一个堆栈。所以你只需要根据需要弹出堆栈中的项目,而不需要索引等。
这是LIFO - 最后一次出局
var stack=[];
stack.push(1);
stack.push(2);
stack.push(3);
然后删除项目
var result = stack.pop();
答案 1 :(得分:0)
这是一个提议,包含数据数组和数组<div class="likeblock pull-left">
<a id="<?= $comment->id ?>_upvote up_<?= $comment->user_id?>_<?= $comment->topic_id?>" class="up voteMe">
<i class="fa fa-thumbs-o-up"></i>
<span id="<?= $comment->id ?>_upvote_result" ><?=$comment->up_vote_count?></span>
</a>
<a id="<?= $comment->id ?>_downvote down_<?= $comment->user_id?>_<?= $comment->topic_id?>" class="down voteMe">
<i class="fa fa-thumbs-o-down"></i>
<span id="<?= $comment->id ?>_downvote_result" ><?=$comment->down_vote_count?></span>
</a>
</div>
的属性,用于保存最后一个索引和返回数组下一个元素的函数。
array.index
&#13;
答案 2 :(得分:0)
如果不添加其他小数据结构,似乎没有一个非常优雅的解决方案。我最终添加了字符串关联数组的所有索引的正确数组:
for (var i in strings) i_strings.push(i);
然后代码只是:
newx = (oldx + 1) % i_strings.length;