2014-01-22 42 views
0

我在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 
] 

用户之后已经回答第一个问题,我想如果从位置TOPIC1移动[0]到该阵列的端部,从而使TOPIC1 [0]现在是第二个问题。

我试图切片数组,并推动它,但没有成功,像这样:

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

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

新问题应该始终位于数组的位置[0],否则其余代码将无法工作。 任何想法?

+0

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

回答

2

试试这个:

topic1.push(topic1.shift()); 
+0

谢谢!这实际上解决了这个问题。 – user3224397

0

像这样的东西可能会奏效:

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]; 
} 
相关问题