62 votes

Existe-t-il une méthode pour cloner un tableau dans jQuery?

Ceci est mon code:

 var a=[1,2,3]
b=$.clone(a)
alert(b)
 

JQuery n'a-t-il pas de méthode 'clone'? Comment puis-je cloner un tableau en utilisant jQuery?

162voto

meder Points 81864

Il suffit d'utiliser Array.prototype.slice .

 a = [1];
b = a.slice();
 

JSFiddle - http://jsfiddle.net/neoswf/ebuk5/

11voto

astgtciv Points 115

Qu'en est-il de jQuery.merge ([], a)?

7voto

JapanPro Points 6278

Changement

b=$.clone(a) pour b=$(this).clone(un) , mais le temps ne fonctionnent pas

mais est signalé

http://www.fusioncube.net/index.php/jquery-clone-bug-in-internet-explorer

Solution vous utilisez simple intégré clone fonction de 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

Une excellente alternative est

 // Shallow copy
  var b = jQuery.extend({}, a);

  // Deep copy
  var b = jQuery.extend(true, {}, a);

-John Resig

Vérifier poste similaire

7voto

Chtiwi Malek Points 1574

Voici comment je l'ai fait:

 var newArray = JSON.parse(JSON.stringify(orgArray));
 

cela créera une nouvelle copie profonde non liée à la première (pas une copie superficielle).

de plus, cela ne clonera évidemment pas les événements et les fonctions, mais la bonne chose que vous puissiez faire en une seule ligne peut être utilisé pour n’importe quel roi d’objet (tableaux, chaînes, nombres, objets ...)

1voto

Reigel Points 34008

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;
    }​
}
 

utilisé 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]​
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X