Копировать массив Javascript в новый массив

Я хочу создать массив из существующего массива, чтобы изменить новый массив, не затрагивая старый. Я понимаю, что массивы изменяемы, и поэтому новый массив влияет на старый.

например.

old = ["Apples", "Bananas"];
new = old;

new.reverse();

Старый также был отменен.

В Python я могу просто сделать new = list(old), но выполнение new = new Array(old); ставит старый список внутри списка.

+47
30 мар. '13 в 19:15
источник поделиться
2 ответа

Вы можете использовать метод .slice:

var old = ["Apples", "Bananas"];
var newArr = old.slice(0);
newArr.reverse(); 
// now newArr is ["Bananas", "Apples"] and old is ["Apples", "Bananas"]

Array.prototype.slice возвращает неглубокую копию части массива. Предоставление 0 в качестве первого параметра означает, что вы возвращаете копию всех элементов (начиная с индекса 0)

+102
30 мар. '13 в 19:16
источник

Попробуйте выполнить

newArray = oldArray.slice(0);
+9
30 мар. '13 в 19:16
источник

Связанные вопросы


Похожие вопросы

Посмотрите другие вопросы по метке или Задайте вопрос