2012-10-19 106 views
0

林從數組的數組中除去一個陣列對空數組推送拼接陣列到陣列離開我用三次嵌套數組

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可以得到真煩人,因此使用該功能瞭解IM如果有一些嵌套的數組:

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(); 
} 

回答

1

呀,如果你看docs,你可以看到Array.splice返回一個數組,而不是一個數組的元素(即使拼接只有長度爲1)。

這將做你想做的,雖然可能不是你的解決方案後:

_closed.push(_open.splice(0, 1)[0]); 

什麼可能滿足您的需求更多的是使用

_closed.push(_open.shift()) 

_closed.push(_open.pop()) 

取決於您是希望第一個還是最後一個元素_open具有多個元素。儘管從名字_open和_closed,我猜你需要從_open中的任意位置(一旦它關閉)拉出一個元素......爲此,你應該使用第一個解決方案。