我从一个数组数组中删除一个数组到一个空数组
var _open:Array = [[x, y]];
var _closed:Array = [];
_closed.push(_open.splice(0, 1));
让我的数组_closed为:
[[[x, y]]]
有谁知道为什么?因为如果我在没有使用拼接功能的情况下推送东西,我会得到我所期望的,没有额外的嵌套。例如:
_closed.push([8,13]);
// _closed is [[8,13]]
顺便说一下,在AS3中跟踪(主要是数组)会变得很烦人,所以我使用这个函数来知道数组中是否有一些嵌套:
public static function traceArray(aArray:Array):void
{
for (var t:Object in aArray) {
trace(t + " : " + aArray[t]);
if (typeof(aArray[t]) == "object") {
traceArray(aArray[t]);
}
}
trace();
}
答案 0 :(得分:1)
是的,如果你查看docs,你可以看到Array.splice
返回一个数组,而不是数组的元素(即使拼接只有长度为1)。
这可以做你想要的,虽然可能不是你想要的解决方案:
_closed.push(_open.splice(0, 1)[0]);
更适合您需求的是使用
_closed.push(_open.shift())
或
_closed.push(_open.pop())
取决于您是否希望第一个或最后一个元素_open
具有多个元素。虽然名字是_open和_closed,但我猜你需要从_open中的任意位置拉出一个元素(一旦它被关闭)......为此,你应该选择第一个解决方案。