Копировать массив Javascript в новый массив
Я хочу создать массив из существующего массива, чтобы изменить новый массив, не затрагивая старый. Я понимаю, что массивы изменяемы, и поэтому новый массив влияет на старый.
например.
old = ["Apples", "Bananas"];
new = old;
new.reverse();
Старый также был отменен.
В Python я могу просто сделать new = list(old)
, но выполнение new = new Array(old);
ставит старый список внутри списка.
Ответы
Ответ 1
Вы можете использовать метод .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)
Ответ 2
Попробуйте выполнить
newArray = oldArray.slice(0);