Heim > Web-Frontend > js-Tutorial > Einführung in die Methode des Array-Klonens in JavaScript (mit Code)

Einführung in die Methode des Array-Klonens in JavaScript (mit Code)

不言
Freigeben: 2019-03-20 10:11:37
nach vorne
2721 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine Einführung in die Methode des Array-Klonens in JavaScript (mit Code). Ich hoffe, dass er für Freunde hilfreich ist.

js ist hauptsächlich in zwei Kategorien unterteilt: Basisdatentyp und Referenzdatentyp

Zu den Basisdatentypen gehören: Zahl, Zeichenfolge, undefiniert, null, boolean, Symbol (neu in es6)
Referenzdatentypen: Objekt, Array, Funktion, Daten usw.
Hinweis: Grundlegende Datentypen werden im Stapelbereich platziert und nach Wert gespeichert und können gelesen werden direkt abrufen und bedienen.
Der Referenzdatentyp wird im **Heap-Bereich** (Gate) gespeichert. Der Wert der Variablen zeigt tatsächlich auf die Adresse (Schlüssel) des Heap-Bereichs. Wenn Sie diese Variable also klonen, entspricht sie Kopieren des Schlüssels.

let arr = [1,2,3,4,5]
let arr1 = arr  // 这一步相当于把arr栈空间的地址赋给了arr1,其实arr和arr1操作的是同一个堆空间的对象
arr1.push(6) // arr1 = [1,2,3,4,5,6]
console.log(arr) //[1,2,3,4,5,6]
Nach dem Login kopieren

Für eine Kopie vom Referenztyp müssen Sie also das Objekt im Heap-Bereich kopieren

Array flache Kopie
1 Array-Slice und Die Concat-Methode gibt eine Eigenschaften des neuen Arrays

let arr = [1,2,3,4,5]
let arr1 = arr.slice() //[1,2,3,4,5]
let arr2 = arr.concat() //[1,2,3,4,5]
Nach dem Login kopieren

2 zurück. Einfache und grobe Methode – Traverse

let arr = [1,2,3,4,5]
let arr2 = []
arr.forEach(item=>{
    arr2.push(item)
    }
)
console.log(arr2)
Nach dem Login kopieren

3.es6 neue Methode – Erweiterungsoperator

let arr = [1,2,3,4,5]
let arr1 = [...arr] //[1,2,3,4,5]
Nach dem Login kopieren

4.es6 neue Methode-Object.assign
let arr = [1,2,3,4,5]
let arr1 = []
Object.assign(arr1,arr )
console.log(arr1) //[1,2,3.4,5]

Wenn Arrays und Objekte im Array verschachtelt sind, kopiert shallow copy nur das Array oder Objekt und Speichern Sie es im Stapelbereich. Die Adresse von ist . Unabhängig davon, ob sich das Objekt ändert, auf das diese Adresse im alten und neuen Array zeigt, ändern sich beide Arrays . Daher benötigen wir eine tiefe Kopie, um ein solches Array zu kopieren.

Array Deep Copy
1. Gewöhnlicher Durchlauf, Kopieren des Referenztyps beim Durchlauf zum Referenztyp

let arr = [1,2,3,4,5,{name:'bob'},['a','b']]
      function clone (arr) {
        let arr1 = []
        arr.forEach(item=>{
        //如果不是object,将该值插入到新数组
          if(typeof(item) !== 'object') {
            arr1.push(item)
          } else {
          //根据遍历的对象新建一个相同类型的空对象
            let obj = item instanceof Array ? [] : {}
            for(var key in item){
              if(item.hasOwnProperty(key)){
                obj[key] = item[key]
              }
            }
            arr1.push(obj)
          }
        })
        return arr1
      }
      let arr1 = clone(arr)
      arr1[5].name = 'js'
      console.log(arr,'arr',arr1,'arr1')
Nach dem Login kopieren

2. Einfach und grob (kann Arrays kopieren und Objekte, aber die Funktion kann nicht kopiert werden)

let arr = [1,2,3,4,5,{name:'bob'},['a','b']]
let arr1 = JSON.parse(JSON.stringify(arr))
Nach dem Login kopieren

Dieser Artikel ist hier zu Ende. Weitere spannende Inhalte finden Sie in der Spalte JavaScript-Tutorial-Video auf der chinesischen PHP-Website!

Das obige ist der detaillierte Inhalt vonEinführung in die Methode des Array-Klonens in JavaScript (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage