【问题标题】:Move an Item from the beginning of an Array to the end将项从数组的开头移动到结尾
【发布时间】:2014-02-12 20:55:48
【问题描述】:

我有 5 个主题的 10 个问题。每个问题都是每个主题的多维数组的一部分。我需要将第一个问题移到该数组的最后一个位置,然后将其擦除。这样,用户将被问到十个问题而不重复它们,并且如果他愿意的话,他可以重复它们。

这是一个示例数组:

var topic1 = [{
   "question":"Question1?",
   "ans1" :"Answer 1", "ans2" :"Answer 2", "ans3" :"Answer 3"
},
{
   "question":"Question2?",
   "ans1" :"Answer 1", "ans2" :"Answer 2", "ans3" :"Answer 3"
},
{
   "question":"Question2?",
   "ans1" :"Answer 1", "ans2" :"Answer 2", "ans3" :"Answer 3"
}
//and like that 'til qustion 10
]

用户回答完第一个问题后,我想 if 从位置 topic1[0] 移动到该数组的末尾,因此 topic1[0] 现在是第二个问题。

我尝试对数组进行切片并推送它,但无济于事,如下所示:

var moveThis = topic1.slice(0,1);
topic1.push(moveThis);
topic1.shift();

这实际上将数组推入自身......或类似的东西。

新问题应始终位于数组的 [0] 位置,否则其余代码将不起作用。 有什么想法吗?

【问题讨论】:

  • 问题是:slice返回一个数组。所以你必须使用数组的第一个元素:var moveThis = topic1.slice(0,1)[0];

标签: jquery arrays push


【解决方案1】:

试试这个:

topic1.push(topic1.shift());

【讨论】:

    【解决方案2】:

    这样的事情可能会奏效:

        var firstToEnd = function(array)
        {
            var first = array[0];
            array.removeAt(0);
            array.push(first);
        }
    

    但是你为什么不显示当前问题,而在用户回答时将当前问题更改为下一个问题?

    var current = 0;
    var question = topic1[current];
    
    var nextQuestion = function()
    {
      current++;
      question = topic1[current];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 2019-06-04
      相关资源
      最近更新 更多