Pernyataan Masalah:
Apabila menyimpan sebilangan besar objek dengan cekap dan perlu mendapatkannya dengan ID berangka yang unik dan panjang, adalah penting untuk menentukan struktur data terbaik: tatasusunan atau objek.
Pilihan Tatasusunan:
<code class="javascript">var a = [{id: 29938, name: 'name1'}, {id: 32994, name: 'name1'}];</code>
Untuk mencari objek dalam tatasusunan, carian linear diperlukan:
<code class="javascript">function getObject(id) { for (var i=0; i < a.length; i++) { if (a[i].id == id) return a[i]; } }</code>
Pilihan Objek:
<code class="javascript">var a = {}; a[29938] = {id: 29938, name: 'name1'}; a[32994] = {id: 32994, name: 'name1'};</code>
Dengan objek, pengambilan adalah terus berdasarkan ID yang digunakan sebagai kunci:
<code class="javascript">function getObject(id) { return a[id]; }</code>
Analisis:
Secara amnya, tatasusunan adalah lebih pantas sedikit daripada objek untuk mendapatkan semula elemen individu, terutamanya dengan tatasusunan yang besar. Ini kerana objek mempunyai pasangan nilai kunci, yang memerlukan overhed carian tambahan berbanding dengan pengindeksan mudah tatasusunan.
Keputusan Ujian Prestasi (2017):
Satu prestasi ujian yang dijalankan pada 2017 mendedahkan bahawa tatasusunan adalah lebih pantas daripada tatasusunan berlubang dan objek untuk mendapatkan semula objek tunggal.
Isih:
Prestasi pengisihan bergantung pada algoritma pengisihan yang digunakan dan bilangan elemen. Walaupun tatasusunan boleh diisih dengan lebih cekap daripada objek menggunakan kaedah terbina dalam seperti Array.sort(), perbezaannya mungkin tidak ketara untuk set data yang lebih kecil.
Kesimpulan:
Jika operasi utama mendapatkan semula objek tunggal berdasarkan IDnya, tatasusunan secara amnya lebih cekap daripada objek, terutamanya untuk sejumlah besar objek. Walau bagaimanapun, jika pengisihan adalah keperluan yang kerap, pilihan struktur data mungkin memerlukan ujian dan pertimbangan lanjut.
Atas ialah kandungan terperinci Tatasusunan lwn. Objek dalam JavaScript: Manakah Lebih Cepat untuk Mendapatkan Semula Objek Tunggal dengan ID Berangka Panjang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!