Saya memiliki string sebagai
string = "firstName:name1, lastName:last1";
sekarang saya butuh satu objek obj sedemikian rupa
obj = {firstName:name1, lastName:last1}
Bagaimana saya bisa melakukan ini di JS?
javascript
string
object
rahul
sumber
sumber
Jawaban:
Sebenarnya, solusi terbaik adalah menggunakan JSON:
Dokumentasi
JSON.parse(text[, reviver]);
Contoh:
1)
2)
3) Melewati fungsi ke JSON
sumber
eval
nanti.Tali Anda terlihat seperti string JSON tanpa kawat gigi keriting.
Maka ini harus bekerja:
sumber
obj = eval('({' + str + '})');
Jika saya mengerti dengan benar:
Saya berasumsi bahwa nama properti di sebelah kiri titik dua dan nilai string yang diperlukan adalah di sebelah kanan.
Perhatikan bahwa
Array.forEach
ini JavaScript 1.6 - Anda mungkin ingin menggunakan toolkit untuk kompatibilitas maksimum.sumber
Cara sederhana ini ...
keluaran
sumber
jika Anda menggunakan JQuery:
INGAT: eval itu jahat! : D
sumber
eval
.globalEval: /** code **/ window[ "eval" ].call( window, data ); /** more code **/
Karena metode JSON.parse () membutuhkan kunci Object yang dilampirkan dalam tanda kutip agar berfungsi dengan benar, pertama-tama kita harus mengubah string menjadi string yang diformat JSON sebelum memanggil metode JSON.parse ().
Ini akan berfungsi bahkan jika string memiliki objek yang kompleks (seperti yang berikut) dan masih akan dikonversi dengan benar. Pastikan saja string itu sendiri tertutup dalam tanda kutip tunggal.
sumber
Anda perlu menggunakan JSON.parse () untuk mengonversi String menjadi Obyek:
sumber
Jika Anda memiliki string seperti
foo: 1, bar: 2
Anda dapat mengonversinya menjadi obj yang valid dengan:Terima kasih kepada niggler dalam #javascript untuk itu.
Perbarui dengan penjelasan:
Dokumen MDN yang membingungkan:
Demo: http://jsbin.com/hiduhijevu/edit?js,console
Fungsi:
sumber
Saya menerapkan solusi dalam beberapa baris kode yang bekerja dengan cukup andal.
Memiliki elemen HTML seperti ini tempat saya ingin memberikan opsi khusus:
suatu fungsi mem-parsing opsi kustom dan mengembalikan objek untuk menggunakannya di suatu tempat:
sumber
data-
atribut alih-alih membuat atribut pseudo-custom seperti beberapa kerangka / pustaka.Ini akan berhasil:
Namun itu tidak efisien. Apa yang terjadi ketika Anda memiliki sesuatu seperti ini:
split()
akan membagi 'http'. Jadi saya sarankan Anda menggunakan pembatas khusus seperti pipasumber
Ini adalah kode universal, tidak peduli seberapa panjang input Anda tetapi dalam skema yang sama jika ada: pemisah :)
sumber
Saya menggunakan JSON5 , dan berfungsi dengan baik.
Bagian yang baik adalah mengandung tidak ada
eval
dan tidak adanew Function
, sangat aman untuk digunakan.sumber
Dalam kasus Anda
sumber
"Objek" array akan memiliki semua objek
sumber
Saya tahu ini adalah posting lama tetapi tidak melihat jawaban yang benar untuk pertanyaan itu.
Sekarang Anda dapat menggunakan
obj.firstName
danobj.lastName
untuk mendapatkan nilai-nilai yang dapat Anda lakukan secara normal dengan objek.sumber