如何在Javascript

时间:2016-01-31 08:41:28

标签: javascript associative-array

这是一个包含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)
  }
}

3 个答案:

答案 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> 的属性,用于保存最后一个索引和返回数组下一个元素的函数。

&#13;
&#13;
array.index
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如果不添加其他小数据结构,似乎没有一个非常优雅的解决方案。我最终添加了字符串关联数组的所有索引的正确数组:

for (var i in strings) i_strings.push(i);

然后代码只是:

newx = (oldx + 1) % i_strings.length;