Bagaimana untuk Mengakses Sifat Objek JavaScript Bersarang Menggunakan Rentetan?

DDD
Lepaskan: 2024-11-20 15:35:16
asal
586 orang telah melayarinya

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 } };
Salin selepas log masuk

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

r.b.b2
Salin selepas log masuk

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

var s = "b.b2";
Salin selepas log masuk

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:
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan