Как удалить последний элемент массива? - PullRequest
2 голосов
/ 15 февраля 2012

У меня есть множество вопросов для интерактивной викторины.Когда вы отвечаете на вопрос, функционально я хочу, чтобы этот вопрос был удален из массива (cat4Questions), чтобы он не возвращался игроку, поэтому я попытался соединить его.

Я не был уверен,это работало, поэтому я проследил массив.В то время как я ожидал, что «вопрос1, вопрос2, вопрос3, вопрос4» будет отслежен, «вопрос1, вопрос2, вопрос3, вопрос4, вопрос5» был результатом моей трассировки.

Это строка кода, в которой я пытаюсьсклеить массив:

cat4Questions.splice(cat4Questions.length,1);

trace(cat4Questions);

Ответы [ 3 ]

13 голосов
/ 15 февраля 2012

Вы должны взглянуть на shift() и pop() методы массива.

shift() Удаляет первый элемент из массива и возвращает этот элемент. Остальные элементы массива перемещаются из своей исходной позиции i в i-1.

pop() Удаляет последний элемент из массива и возвращает значение этого элемента.

В вашем случае вам, вероятно, понадобится функция pop () для удаления последнего элемента массива.

1 голос
/ 15 февраля 2012

Возможно, вы собираетесь удалить элементы, отличные от последнего элемента в массиве.Если, например, пользователь отвечает на другой вопрос.

Вы можете использовать этот код для удаления любого вопроса:

cat4Questions.splice(cat4Questions.indexOf(question), 1);

Редактировать

Как я уже сказалв комментариях ниже вы не должны смотреть на производительность этого.Но вот как использовать pop вместо splice.

cat4Questions[cat4Questions.indexOf(question)] = cat4Questions.pop();

Вы также можете удалить вызовы pop и indexOf, потому что они неэффективны либо

lastQuestion = cat4Questions[--numQuestions];
cat4Questions[question.index] = lastQuestion;
lastQuestion.index = question.index;

Где вопрос - вопросдля удаления index - это индекс вопроса (вы должны следить за этим), а numQuestions - общее количество вопросов.Таким образом, вы никогда не используете length, indexOf, pop, splice, ...

1 голос
/ 15 февраля 2012

Массивы индексируются нулем, поэтому вы должны использовать Array.length-1; для получения позиции индекса массива.

cat4Questions.splice(cat4Questions.length-1,1);
trace(cat4Questions);

trace now.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...