【发布时间】:2017-12-26 10:26:07
【问题描述】:
我有这段代码,我根据布尔变量从数组中删除第一个(或最后一个)元素。我喜欢这样:
{...
console.log("length before " + waypoints.length)
waypoints = this.deleteWaypoint(waypoints)
console.log("length after " + waypoints.length)
...}
deleteWaypoint(waypoints){
if (this.first){
this.first = false;
return waypoints.shift()
} else {
this.first = true;
return waypoints.pop()
}
}
第一个日志打印waypoints有一定的长度,然后我调用删除元素的方法,第二个日志打印的时间是length after undefined。 “First”是一个初始化为true的全局变量。
这是为什么?
【问题讨论】:
-
一旦你的数组为空,你就会得到未定义,如here所述
-
Array.prototype.shift: “shift()方法从数组中删除第一个元素并返回删除的元素。” -
将您的退货声明更新为
deleteWaypoint中的return waypoints -
也考虑给我们更多细节。你的阵列看起来如何? mcve
-
@Andreas 是的,现在在 waypoints.shift() 中修改;返回航点。谢谢。抱歉这个愚蠢的问题,如果你回答我会给你点赞和正确答案
标签: javascript arrays