2014-01-22 3 views
0

У меня есть набор из десяти вопросов по 5 темам. Каждый вопрос является частью многомерного массива каждой темы. Мне нужно перенести первый вопрос на последнюю позицию этого массива, а затем стереть его. Таким образом, пользователю будут заданы десять вопросов, не повторяя их, и они смогут повторить их, если он захочет сделать это.Переместить элемент с начала массива до конца

Это пример массива:

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]; 
} 
Смежные вопросы