我有一系列关于互动问答游戏的问题。当你回答一个问题时,我在功能上希望从数组中删除这个问题(cat4Questions),这样它就不会回来给玩家,所以我试着拼接它。
我不确定它是否正常工作所以我追踪了数组。虽然我期待“问题1,问题2,问题3,问题4”被追查,但“问题1,问题2,问题3,问题4,问题5”是我追踪的结果。
这是我尝试拼接数组的代码行:
cat4Questions.splice(cat4Questions.length,1);
trace(cat4Questions);
答案 0 :(得分:13)
<强> 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,...