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

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

например.

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

new.reverse();

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

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

47
30 марта '13 в 22: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 в 22:16
источник

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


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

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

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

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