Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengakses Sifat Objek JavaScript Bersarang Menggunakan Rentetan?

Bagaimana untuk Mengakses Sifat Objek JavaScript Bersarang Menggunakan Rentetan?

DDD
DDDasal
2024-11-20 15:35:16687semak imbas

How to Access Nested JavaScript Object Properties Using a String?

Mengakses Sifat Anak Objek dengan Rentetan Notasi Titik

Mengakses sifat anak objek JavaScript menggunakan tatatanda titik berantai ialah tugas pengaturcaraan biasa. Walau bagaimanapun, terdapat had apabila menggunakan pendekatan ini untuk akses sifat dinamik.

Pertimbangkan objek berikut:

var r = { a: 1, b: { b1: 11, b2: 99 } };

Untuk mengakses nilai b2, seseorang boleh menggunakan notasi titik standard:

r.b.b2

Walau bagaimanapun, jika seseorang memerlukan akses sifat dinamik berdasarkan rentetan, seperti sebagai:

var s = "b.b2";

Percubaan langsung seperti r.s atau r[s] akan gagal. Satu penyelesaian ialah menggunakan fungsi tersuai yang berulang melalui segmen rentetan untuk mendapatkan semula sifat:

function getDescendantProp(obj, desc) {
  var arr = desc.split(".");
  while (arr.length && (obj = obj[arr.shift()]));
  return obj;
}

console.log(getDescendantProp(r, "b.b2")); // 99
````

This function effectively simulates the behavior of dot notation by breaking down the string and recursively accessing the corresponding properties. However, it is important to note that this method works best for simple object property scenarios. Arrays can also be accessed using this approach by treating elements as dotted properties:

getDescendantProp({ a: [ 1, 2, 3 ] }, 'a.2'); // 3

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Sifat Objek JavaScript Bersarang Menggunakan Rentetan?. 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