Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menukar Rentetan Notasi Titik JavaScript kepada Rujukan Objek dengan Selamat?

Bagaimanakah Saya Boleh Menukar Rentetan Notasi Titik JavaScript kepada Rujukan Objek dengan Selamat?

Linda Hamilton
Linda Hamiltonasal
2024-12-20 19:27:10250semak imbas

How Can I Safely Convert a JavaScript Dot Notation String to an Object Reference?

Menukar Rentetan Notasi Titik JavaScript kepada Rujukan Objek

Dalam JavaScript, anda boleh menghadapi senario di mana anda perlu menukar rentetan notasi titik , seperti "a.b", menjadi rujukan kepada sifat bersarang dalam objek. Ini amat berguna apabila bekerja dengan struktur data kompleks atau data yang datang daripada sumber luaran.

Satu penyelesaian mudah ialah menggunakan fungsi eval():

var obj = { a: { b: '1', c: '2' } };
eval('var val = obj.a.b');
console.log(val); // '1'

Walau bagaimanapun, menggunakan eval( ) secara amnya tidak digalakkan disebabkan oleh kebimbangan keselamatan dan potensi isu prestasi.

Pendekatan yang lebih dipercayai ialah menggunakan akses berasaskan indeks menggunakan gabungan belah dan kurangkan:

function index(obj, path) {
  return path.split('.').reduce((o, i) => o[i], obj);
}

var val = index(obj, 'a.b');
console.log(val); // '1'

Fungsi ini membahagikan laluan pada setiap titik ('.') dengan berkesan dan menggunakan reduce untuk mengakses sifat bersarang secara berulang dalam objek.

Dengan menggunakan teknik ini, anda boleh menukar rentetan notasi titik kepada rujukan objek dengan selamat dan cekap.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Rentetan Notasi Titik JavaScript kepada Rujukan Objek dengan Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn