Ceci est mon code:Existe-t-il une méthode pour cloner un tableau dans jQuery?
var a=[1,2,3]
b=$.clone(a)
alert(b)
N'a pas jQuery ont une méthode 'clone'? Comment puis-je cloner un tableau en utilisant jQuery?
Ceci est mon code:Existe-t-il une méthode pour cloner un tableau dans jQuery?
var a=[1,2,3]
b=$.clone(a)
alert(b)
N'a pas jQuery ont une méthode 'clone'? Comment puis-je cloner un tableau en utilisant jQuery?
Utilisez simplement Array.prototype.slice
.
a = [1];
b = a.slice();
jsFiddle - http://jsfiddle.net/neoswf/ebuk5/
Ceci est synonyme de 'tranche (0)'? –
@Peter Ajtai - ouais. –
Merci meder. ....... La seule chose à surveiller, c'est que les tableaux sont des objets, donc vous pouvez attacher des propriétés et des méthodes ... comme 'var a = [1,2,3]; a.foo = function() {alert (this); }; 'Avec' slice() 'toutes les propriétés et méthodes attachées ne sont pas copiées, donc vous ne pourriez pas faire' b.foo() '... Je ne fais qu'appeler, puisque' .clone() 'de jQuery ne inclure une option de copie profonde. Par exemple: http://jsfiddle.net/B2LQL/ .......... Mais c'est à peu près un cas d'angle dans le contexte de cette question. –
essayer
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;
}
}
utilisation comme
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]
changement
b = $. Clone (a) à b = $ (this) .clone (a) mais un peu de temps ne fonctionnent pas
mais est rapporté
http://www.fusioncube.net/index.php/jquery-clone-bug-in-internet-explorer
Solution vous utilisez la fonction simple clone de javascript intégré
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
Une alternative est
// Shallow copy
var b = jQuery.extend({}, a);
// Deep copy
var b = jQuery.extend(true, {}, a);
-John Resig
Vérifier poste similaire
Japan- Extend est destiné aux objets. Ur premier func était également destiné à Object. – neoswf
Étendre fonctionne très bien pour un tableau, il suffit de changer l'objet vide {} dans un tableau vide []. –
Qu'en est-il du jQuery.merge?
copy = $.merge([], a);
Voilà comment je l'ai fait:
var newArray = JSON.parse(JSON.stringify(orgArray));
cela va créer une nouvelle copie en profondeur ne sont pas liées à la première (et non une copie superficielle).
aussi évidemment cela ne clonera pas les événements et les fonctions, mais la bonne chose que vous pouvez le faire en une seule ligne et il peut être utilisé pour n'importe quel roi d'objet (tableaux, chaînes, nombres, objets ...)
Ce n'est évidemment pas la bonne option pour une grande structure complexe, mais c'est une très belle doublure, et en fait l'approche que j'ai fini par prendre. – podperson
var a=[1,2,3]
b=JSON.parse(JSON.stringify(a));
document.getElementById("demo").innerHTML = b;
<p id="demo"></p>
ES6 S'il vous plaît étalée
let arrayCopy = [...myArray];
Pour voir le clonage tableau Multidimensional - http://stackoverflow.com/questions/2294703/multidimensional-array-cloning-using -javascript – vsync
Oui. jQuery a une méthode clone et s'étend également avec le paramètre deep défini sur true. Voir http://api.jquery.com/clone/ et http://api.jquery.com/jquery.extend/ L'option rapide et sale pour les petites quantités de données est d'utiliser JSON.parse (JSON.stringify (original)). Pour de grandes quantités de données, peut-être que vous ne devriez pas être en train de cloner ?! – podperson
Utiliser l'opérateur de propagation – zloctb