2013-04-10 3 views
0

У меня есть цикл, который работает для длины 2D-массива. Мне нужен способ дублирования одного из подмассивов (один цикл включен) и добавить его в конец основного массива (чтобы цикл прошел через этот элемент.) Все работает правильно, пока я не попытаюсь добавить новый массив. Ниже приведен краткий код.Дублирующий элемент в 2D массиве Javascript

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 = агент [я]'? ?? Есть ли причина, по которой вы считали, что это сработает? Кроме того, если ваше условие основано на этом массиве, тогда у вас будет бесконечный цикл, потому что он в конечном итоге ударит тот, который вы добавляете, вызывая другое добавление, а другое и так далее. Вам нужно выполнить повторную итерацию или кешировать исходную длину. – 2013-04-10 15:05:16

ответ

1
agent.push = agent[i] 

должен быть

agent.push(agent[i]); 

Edit:, если вы хотите скопировать массив, а затем использовать:

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

К сожалению, это была опечатка с моей стороны, когда я упростил код. Проблема у меня есть, если я редактирую элемент в исходном агенте или новом агенте, он редактирует этот элемент в обоих. Я хочу создать копию агента [i], но после этого они будут раздельными. – user2266602

+0

@ user2266602 См. Мое редактирование. – xdazz

+0

Это сделало. Благодаря! – user2266602

Смежные вопросы