Dalam tutorial ini, kita akan mempelajari cara terpantas untuk menukar JavaScript NodeList kepada Array. NodeList ialah struktur seperti tatasusunan; ia adalah koleksi elemen DOM (Document Object Model). Walau bagaimanapun, kaedah tatasusunan seperti "map( )", "filter( )" dan "slice( )" tidak boleh digunakan pada objek NodeList.
Terdapat banyak cara untuk menukar NodeList kepada Array, tetapi gunakan dua kaedah ini untuk menyelesaikan tugas dengan lebih cepat -
Dengan melelaran melalui gelung for
Gunakan fungsi Array.from( )
Dalam JavaScript, kita boleh menggunakan gelung for untuk mengulang NodeList untuk mendapatkan semua elemen melaksanakan tugas tertentu. Jadi, dengan mengulangi NodeList, kami menyalin semua elemen NodeList dalam tatasusunan.
const len = nodeList.length; const arr = Array(len); for (var i = 0 ; i != len ; i++) { arr[i] = nodeList[i]; }
Kami menyimpan panjang nodeList dalam pembolehubah dan mengisytiharkan tatasusunan saiz itu. Apabila kita mengetahui saiz tatasusunan, adalah lebih baik untuk mengisytiharkan tatasusunan saiz tetap. Kemudian kami menggunakan gelung for untuk menetapkan nilai dalam tatasusunan.
Langkah 1 - Simpan panjang nodeList dalam pembolehubah len.
Langkah 2 - Isytiharkan susunan saiz lensa.
Langkah 3 - Dalam gelung for, mulakan pembolehubah pembilang "i" dengan nilai 0.
Langkah 3.1 - Ulang gelung sehingga "i" tidak sama dengan len.
Langkah 3.2 - Dalam keadaan kemas kini, tambah "i" sebanyak 1.
Langkah 3.3 - Dalam badan gelung for, tetapkan nilai indeks ke-i NodeList kepada indeks ke-i tatasusunan.
< /里>Dalam contoh di bawah, menggunakan kaedah Document document.querySelectorAll(), kami mendapat NodeList pemilih jenis "div". Kami sedang menukar NodeList ini kepada tatasusunan.
<html> <body> <h2> Convert JavaScript NodeList to Array </h2> <div> <p> This is paragraph of first 'div' element </p> </div> <div> <p> This is paragraph of second 'div' element </p> </div> <div id = "output"> </div> <script> let output = document.getElementById("output"); output.innerHTML = " <p> This is paragraph of third 'div' element </p> " output.innerHTML += " <b> Output of <i> NodeList </i> <b> <br> <br> "; //get NodeList of 'div' elements const nodeList = document.querySelectorAll('div'); //Display output of NodeList output.innerHTML += nodeList + "<br> <br>"; output.innerHTML += "<b> Output of <i> Array </i> <b> <br> <br>"; //save length of NodeList const len = nodeList.length; //Declare array of size len const arr = Array(len); //This for loop will convert NodeList to Array for (var i = 0 ; i != len ; i++) { arr[i] = nodeList[i]; } //Display output of Array output.innerHTML += arr; </script> </body> </html>
Dalam kod di atas, pengguna boleh melihat bahawa kami menggunakan gelung for untuk mencipta tatasusunan sebenar daripada NodeList. Kami menggunakan const untuk menyimpan panjang NodeList dalam 'len' dan mengisytiharkan tatasusunan saiz 'len' ini akan menjadikan operasi kami lebih cepat.
Kami mempunyai 3 elemen "div". Oleh itu, kami mendapat tatasusunan saiz 3 seperti yang ditunjukkan dalam output.
Kaedah ini boleh digunakan untuk mencipta tika Array bagi objek boleh lelar atau objek seperti tatasusunan. Kami sedang menukar NodeList, yang mempunyai struktur yang serupa dengan tatasusunan.
Dengan ES6 (ECMAScript 6), kita boleh mendapatkan tatasusunan daripada NodeList dengan sangat mudah menggunakan fungsi Array.from(). Jika kita tidak mahu mengulangi NodeList dan hanya mahu menukarnya, maka ini akan menjadi cara terpantas.
const nodeList = document.querySelectorAll('p'); let arr = Array.from(nodeList);
Di sini kami telah mencipta NodeList pemilih jenis "p" menggunakan document.querySelectorAll() kaedah Document. Kami menghantar NodeList ini sebagai parameter ke dalam fungsi Array.from(). Fungsi ini mengembalikan tatasusunan. Kami hanya memerlukan satu baris kod untuk menukarnya kepada tatasusunan, yang menjadikannya mudah diingat dan difahami.
Dalam contoh di bawah, kami mencipta NodeList pemilih jenis "p". Kami menukar NodeList ini kepada tatasusunan menggunakan fungsi Array.from().
<html> <body> <h2> Convert JavaScript NodeList to Array </h2> <p> We are here to teach you various concepts of Computer Science through our articles.</p> <p>Stay connected with us for such useful content.</p> <div id = "output"> </div> <script> let output = document.getElementById("output"); output.innerHTML = " <b> Output of <i> NodeList </i> <b> <br> <br> "; //get NodeList of 'p' elements const nodeList = document.querySelectorAll('p'); //Display output of NodeList output.innerHTML += nodeList + "<br> <br>"; output.innerHTML += " <b> Output of <i> Array </i> <b> <br> <br> "; //This will convert NodeList to Array let arr = Array.from(nodeList); //Display output of Array output.innerHTML += arr; </script> </body> </html>
Dalam output di atas, pengguna melihat bahawa kami mendapat tatasusunan yang mengandungi 2 elemen "p". Oleh itu, NodeList kami berjaya ditukar kepada tatasusunan menggunakan hanya satu panggilan fungsi.
NOTA - Kaedah di atas berfungsi dengan baik dalam semua pelayar moden tetapi mungkin tidak berfungsi dengan betul dalam pelayar lama.
Kami telah belajar untuk menukar NodeList kepada Array. Cara pertama ialah menggunakan gelung for dengan mengulangi NodeList. Cara kedua ialah menggunakan kaedah Array.from(). Apabila pengguna hanya mahu menukar NodeList, dan bukannya mengulanginya, adalah disyorkan untuk menggunakan kaedah Array.from().
Atas ialah kandungan terperinci Cara terpantas untuk menukar NodeList JavaScript kepada Array. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!