web-dev-qa-db-ger.com

Gibt es eine Methode zum Klonen eines Arrays in jQuery?

Das ist mein Code:

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

Verfügt jQuery nicht über eine "Klon" -Methode? Wie kann ich ein Array mit jQuery klonen?

57
zjm1126

Verwenden Sie einfach Array.prototype.slice .

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

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

148
meder omuraliev

Was ist mit der jQuery.merge

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

Veränderung

b = $. clone (a) bis b = $ (this) .clone (a), aber es funktioniert einige Zeit nicht

wird aber berichtet

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

Solution Sie verwenden eine einfache eingebaute Klonfunktion von 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

Eine gute Alternative ist

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

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

-John Resig

Ähnliche Post überprüfen

6
Pramendra Gupta

So habe ich es gemacht:

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

dadurch wird eine neue tiefe Kopie erstellt, die sich nicht auf die erste bezieht (keine flache Kopie).

natürlich werden auch keine Ereignisse und Funktionen geklont, aber das Gute, Sie können es in einer Zeile machen, und es kann für jeden König von Objekten (Arrays, Strings, Zahlen, Objekte ...) verwendet werden.

5
Chtiwi Malek

versuchen

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

benutzen als

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

Eine weitere Option ist die Verwendung von 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 Bitte Spread verwenden 

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