Тонкости копирования массивов в JavaScript

Столкнулся с популярной, оказывается, проблемой копирования массивов. Дело в том, что просто приравнять одну переменную с массивом другой – не значит сделать копию этой переменной в JavaScript. Но очень часто нужно получить именно копию. Для решения этой проблемы есть 2 простых способа. Один работает с одномерными массивами, другой с многомерными, но требует jQuery.

Одномерный массив

Для копирования одномерного массива достаточно воспользоваться функцией Array.slice();

Пример:

// Исходный массив
var a = ["a", "b", "c"];
// Результирующий массив
var b = a.slice(0);

Еще один интересный способ, который работает быстрее основан на конкатенации массивов.

Пример:

var b= [].concat(a);

Многомерный массив

Для копирования многомерных массивом можно воспользоваться функцией $.extend из jQuery.

Пример:

// Исходный
var a = [[1], [2], [3]];
// Результат
var b = $.extend(true, [], a);