Bagaimana saya bisa secara dinamis membuat kunci dalam array asosiatif javascript?
Semua dokumentasi yang saya temukan sejauh ini adalah memperbarui kunci yang sudah dibuat:
arr['key'] = val;
Saya punya string seperti ini " name = oscar "
Dan saya ingin berakhir dengan sesuatu seperti ini:
{ name: 'whatever' }
Yaitu saya membagi string dan mendapatkan elemen pertama, dan saya ingin memasukkannya ke dalam kamus.
Kode
var text = ' name = oscar '
var dict = new Array();
var keyValuePair = text.split(' = ');
dict[ keyValuePair[0] ] = 'whatever';
alert( dict ); // prints nothing.
javascript
associative-array
OscarRyz
sumber
sumber
Jawaban:
Gunakan contoh pertama. Jika kunci tidak ada itu akan ditambahkan.
Akan muncul kotak pesan yang berisi 'oscar'.
Mencoba:
sumber
Entah bagaimana semua contoh, saat bekerja dengan baik, terlalu rumit:
new Array()
, yang merupakan jumlah berlebihan (dan overhead) untuk array asosiatif sederhana (kamus AKA).new Object()
. Bekerja dengan baik, tapi mengapa semua ini mengetik ekstra?Pertanyaan ini ditandai "pemula", jadi mari kita buat sederhana.
Cara sederhana untuk menggunakan kamus di JavaScript atau "Mengapa JavaScript tidak memiliki objek kamus khusus?":
Sekarang mari kita ubah nilai:
Menghapus nilai juga mudah:
sumber
Javascript tidak memiliki array asosiatif , ia memiliki objek .
Baris kode berikut semuanya melakukan hal yang persis sama - setel bidang 'nama' pada objek ke 'orion'.
Sepertinya Anda memiliki array asosiatif karena
Array
juga merupakanObject
- namun Anda tidak benar-benar menambahkan sesuatu ke dalam array sama sekali, Anda sedang mengatur bidang pada objek.Sekarang setelah dibersihkan, berikut ini solusi untuk contoh Anda
sumber
Menanggapi MK_Dev, seseorang dapat melakukan iterate, tetapi tidak secara berurutan. (Untuk itu jelas diperlukan array)
Pencarian google cepat memunculkan tabel hash dalam javascript
Kode contoh untuk pengulangan nilai dalam hash (dari tautan tersebut):
sumber
Kode Asli (saya menambahkan nomor baris sehingga dapat merujuk mereka):
Hampir sampai...
trim
pada teksname = oscar
.trim
di baris 1, gunakan=
dan pangkas setiap keyValuePairtambahkan baris setelah 3 dan sebelum 4:
baris 4: Sekarang menjadi:
baris 5: Ubah ke:
Apa yang saya coba katakan adalah bahwa
dict[keyValuePair[0]]
tidak berfungsi, Anda perlu mengatur stringkeyValuePair[0]
dan menggunakannya sebagai kunci asosiatif. Itulah satu-satunya cara saya mendapatkan milik saya untuk bekerja. Setelah mengaturnya, Anda dapat merujuknya dengan indeks numerik atau memasukkan tanda kutip.Semoga itu bisa membantu.
sumber
Semua browser modern mendukung Peta , yang merupakan penyempitan data kunci / nilai. Ada beberapa alasan yang menjadikan penggunaan Peta lebih baik daripada Objek:
Contoh:
Jika Anda ingin kunci yang tidak dirujuk dari objek lain menjadi sampah yang dikumpulkan, pertimbangkan untuk menggunakan WeakMap alih-alih Peta.
sumber
Saya pikir lebih baik jika Anda baru saja dibuat seperti ini
untuk info lebih lanjut, lihat ini
Struktur Data JavaScript - Array Asosiatif
sumber
ini ok tapi beralih melalui setiap properti objek array. jika Anda hanya ingin beralih melalui properti myArray.one, myArray.two ... Anda coba seperti ini
sekarang Anda dapat mengakses keduanya dengan myArray ["one"] dan beralih hanya melalui properti ini.
sumber
Array
danObject
dan bekerja hanya denganObject
pohon! Wawasan luar biasa! Sangat berguna untuk membuatnyaObject.getOwnPropertyNames(obj/array)
!}
sumber