2013-04-10 80 views
0

我有一個運行2D數組長度的循環。我需要一種方法來複制一個子數組(一個循環打開)並將其添加到主數組的末尾(使循環遍歷該元素)。一切正常,直到我嘗試添加新陣列。摘要代碼如下。在2D JavaScript中複製元素Array

var agent = new Array() 
    agent[0] = ["Black", 0, 5, 7] 
    agent[1] = ["Yellow", 1, 3, 2] 
    agent[2] = ["Orange", 5, 9, 2] 
    agent[3] = ["Pink",  8, 1, 5] 
    agent[4] = ["Blue",  9, 5, 8] 

for(i=0;i<=agent.length;i++){ 
    //Test something 
    if(something == true) {  
     agent.push = agent[i] 
    } 
} 

在此先感謝!

+0

'agent.push =劑[I]'? ??有沒有理由認爲這會起作用?另外,如果你的條件是基於那個數組,那麼你將會有一個無限循環,因爲它最終會碰到你添加的那個引起另一個添加,以及另一個,等等。您需要反向迭代,或緩存原始長度。 – 2013-04-10 15:05:16

回答

1
agent.push = agent[i] 

應該

agent.push(agent[i]); 

編輯:,如果你想在陣列複製,然後使用:

agent.push(agent[i].slice(0)); 
+0

對不起,當我簡化代碼時,這是我的一個錯字。 我遇到的問題是,如果我編輯原始代理或新代理中的元素,它會在兩者中編輯該元素。我想創建一個代理[我]的副本,但讓他們在此之後分開。 – user2266602 2013-04-10 15:34:53

+0

@ user2266602看我的編輯。 – xdazz 2013-04-10 15:38:22

+0

這樣做。謝謝! – user2266602 2013-04-10 15:48:30