Столкнулся с популярной, оказывается, проблемой копирования массивов. Дело в том, что просто приравнять одну переменную с массивом другой – не значит сделать копию этой переменной в 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);