Подтвердить что ты не робот

Используя сращивание (0) для дублирования массивов

У меня есть два массива: ArrayA и ArrayB. Мне нужно скопировать ArrayA в ArrayB (в отличие от создания ссылки), и я использовал .splice(0), но заметил, что он удаляет элементы из исходного массива.

В консоли, когда я запускаю этот код:

var ArrayA = [];
var ArrayB = [];

ArrayA.push(1);
ArrayA.push(2);

ArrayB = ArrayA.splice(0);

alert(ArrayA.length);

предупреждение показывает 0. Что я делаю неправильно с .splice(0)??

Спасибо за понимание.

4b9b3361

Ответ 1

Вы хотите использовать slice() (документ MDN), а не splice() (документ MDN)!

ArrayB = ArrayA.slice(0);

slice() оставляет исходный массив нетронутым и просто создает копию.

splice(), с другой стороны, просто изменяет исходный массив, вставляя или удаляя элементы.

Ответ 2

splice(0) захватывает все элементы из 0 и далее (то есть до последнего, т.е. все), удаляет из исходного массива и возвращает их.

Ответ 3

Вы ищете slice:

var a = [1,2,3,4,5]
   ,b = a.slice();
//=> a = [1,2,3,4,5], b = [1,2,3,4,5]

вы можете использовать splice, но он уничтожит ваш исходный массив:

var a = [1,2,3,4,5]
   ,b = a.splice(0);
//=> a = [], b = [1,2,3,4,5]