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)

不言
不言nach vorne
2019-03-20 10:11:372750Durchsuche

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]

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]

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)

3.es6 neue Methode – Erweiterungsoperator

let arr = [1,2,3,4,5]
let arr1 = [...arr] //[1,2,3,4,5]

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

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen