Есть ли способ клонировать массив в jQuery?
Это мой код :
var a=[1,2,3]
b=$.clone(a)
alert(b)
разве у jQuery нет метода "клон"? Как я могу клонировать массив с помощью jQuery?
8 ответов:
просто использовать
Array.prototype.slice
.a = [1]; b = a.slice();
JSFiddle - http://jsfiddle.net/neoswf/ebuk5/
а как же jQuery.слияние ?
copy = $.merge([], a);
изменить
b=$.клон(а) до b=$(это).клон(а) но это некоторое время не работает
но сообщает
http://www.fusioncube.net/index.php/jquery-clone-bug-in-internet-explorer
решение вы используете простую встроенную функцию клонирования javascript
var a=[1,2,3]; b=clone(a); alert(b); function clone(obj){ if(obj == null || typeof(obj) != 'object') return obj; var temp = obj.constructor(); for(var key in obj) temp[key] = clone(obj[key]); return temp; }
- ConroyP
отличная альтернатива это
// Shallow copy var b = jQuery.extend({}, a); // Deep copy var b = jQuery.extend(true, {}, a);
- Джон Уходит В Отставку
Проверьте аналогичный пост
вот как я это сделал:
var newArray = JSON.parse(JSON.stringify(orgArray));
это создаст новую глубокую копию, не связанную с первой (не мелкую копию).
также это, очевидно, не будет клонировать события и функции, но хорошо, что вы можете сделать это в одной строке, и его можно использовать для любого короля объектов (массивов, строк, чисел, объектов ...)
попробовать
if (!Array.prototype.clone) { Array.prototype.clone = function () { var arr1 = new Array(); for (var property in this) { arr1[property] = typeof (this[property]) == 'object' ? this[property].clone() : this[property] } return arr1; } }
использовать как
var a = [1, 2, 3] b = a; a.push(4) alert(b); // alerts [1,2,3,4] //---------------/// var a = [1, 2, 3] b = a.clone(); a.push(4) alert(b); // alerts [1,2,3]