2014-01-22 43 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]; 
} 
相關問題