web-dev-qa-db-fra.com

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?

57
zjm1126

Utilisez simplement Array.prototype.slice .

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

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

148
meder omuraliev

Qu'en est-il du jQuery.merge

copy = $.merge([], a);
10
astgtciv

Changement

b = $. clone (a) à b = $ (this) .clone (a) mais cela ne marche pas longtemps

mais est rapporté

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

Solution Vous utilisez une fonction de clonage incorporée simple 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

Voir poste similaire

6
Pramendra Gupta

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 ...)

5
Chtiwi Malek

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]​
1
Reigel

Une autre option consiste à utiliser Array.concat:

var a=[1,2,3]
var b=[].concat(a);
1
Mike Ratcliffe

var a=[1,2,3]
b=JSON.parse(JSON.stringify(a));
document.getElementById("demo").innerHTML = b;
<p id="demo"></p>

0
Pradeep Kumar

ES6 S'il vous plaît utiliser propagation 

let arrayCopy = [...myArray];
0
zloctb