如何删除数组的最后一项?

时间:2012-02-14 21:08:14

标签: actionscript-3 actionscript

我有一系列关于互动问答游戏的问题。当你回答一个问题时,我在功能上希望从数组中删除这个问题(cat4Questions),这样它就不会回来给玩家,所以我试着拼接它。

我不确定它是否正常工作所以我追踪了数组。虽然我期待“问题1,问题2,问题3,问题4”被追查,但“问题1,问题2,问题3,问题4,问题5”是我追踪的结果。

这是我尝试拼接数组的代码行:

cat4Questions.splice(cat4Questions.length,1);

trace(cat4Questions);

3 个答案:

答案 0 :(得分:13)

您应该查看shift()pop()数组方法。

<强> shift() 从数组中删除第一个元素并返回该元素。其余的数组元素从其原始位置i移动到i-1。

<强> pop() 从数组中删除最后一个元素并返回该元素的值。

在您的情况下,您可能需要pop()函数来删除数组的最后一个元素。

答案 1 :(得分:1)

数组是零索引的,因此您应该使用Array.length-1;来获取数组的索引位置。

cat4Questions.splice(cat4Questions.length-1,1);
trace(cat4Questions);
现在追踪。

答案 2 :(得分:1)

您可能要删除数组中最后一项以外的项目。例如,如果用户回答另一个问题。

您可以使用此代码删除任何问题:

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;

如果问题是要删除的问题,则索引是问题的索引(您必须跟踪该问题),numQuestions是问题的总数。这样,你永远不会使用length,indexOf,pop,splice,...