2016-09-14 1 views
1

Wenn ich ein Array klonen möchte, kann ich die slice() -Funktion verwenden, aber was ist, wenn ich ein einzelnes Element "klonen" möchte? Ich möchte so etwas tun:Javascript: Wie kopiere ich den Wert eines einzelnen Elements von einem Array in ein anderes Array an der gleichen Position?

array1[i] = array2[i]; 

aber ich möchte den Wert kopieren, nicht die Referenz. Wie kann ich das tun? Funktioniert die Lösung auch für assoziative Arrays? Zum Beispiel:

array1["one"] = array2["one"]; 

Vielen Dank im Voraus.

+0

Javascript hat keine assoziativen Arrays, sie sind Objektliterale und haben keine Reihenfolge. Wenn Sie jQuery verwenden, sehen Sie sich '$ .extend()' – charlietfl

+0

an. "Wenn ich ein Array klonen möchte, kann ich die Funktion slice() verwenden: Nein, das geht nicht. – Redu

Antwort

0

Sie Object.assign verwenden könnten und Array.splice

var cloneItem = Object.assign({}, array1[i]); 
    array2.splice(i, 0, cloneItem); 

EDIT
Die bisherige fügen ein Klon Element in der Position, um den Rest der Elemente nach rechts drücken. Wenn Sie einfach ersetzen möchten Sie nur

array2[i] = Object.assign({}, array1[i]); 
0

Sie können dies tun:

array1[i] = Object.assign({}, array2[i]); 

Aber es funktioniert nicht, wenn es Primitive sind ein Array. Sie können auch Slice-Methode verwenden, wie Sie schreibt:

array1[i] = array2.slice(i, 1); 
0

ein Array Klonen richtig (ohne alle Verweise in der verschachtelten Struktur zu verlassen) ist nicht so einfach. Sie brauchen ein Werkzeug dafür. Leider gehört es nicht zu den Standard-Array-Methoden. Du musst es selbst entwickeln. Wie

Array.prototype.clone = function(){ 
    return this.map(e => Array.isArray(e) ? e.clone() : e); 
}; 

Sobald Sie dieses Werkzeug zur Hand haben Sie zuerst das Array klonen und dann unabhängig von Elemente des Wunsch Klon-Array zuweisen; wie array1[i] = array2.clone()[i];

Verwandte Themen