Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengakses Nilai Objek/Array JavaScript Bersarang Menggunakan Laluan Rentetan?

Bagaimana untuk Mengakses Nilai Objek/Array JavaScript Bersarang Menggunakan Laluan Rentetan?

Linda Hamilton
Linda Hamiltonasal
2024-12-22 05:37:12950semak imbas

How to Access Nested JavaScript Object/Array Values Using String Paths?

Mengakses Sifat dan Elemen Menggunakan Laluan Rentetan

Soalan:

Bagaimana anda boleh mendapatkan semula nilai daripada objek JavaScript bersarang atau tatasusunan menggunakan laluan rentetan yang menentukan sifat atau elemen names?

Jawapan:

Menggunakan JavaScript tulen, anda boleh mencapai ini dengan fungsi pembantu berikut:

Object.byString = function (o, s) {
  s = s.replace(/\[(\w+)\]/g, "."); // convert indexes to properties
  s = s.replace(/^\./, ""); // strip a leading dot
  var a = s.split(".");
  for (var i = 0, n = a.length; i < n; ++i) {
    var k = a[i];
    if (k in o) {
      o = o[k];
    } else {
      return;
    }
  }
  return o;
};

Fungsi ini mengambil dua parameter : objek atau tatasusunan untuk menavigasi, dan laluan rentetan yang mewakili sifat atau elemen untuk dapatkan semula.

Contoh:

Mari gunakan struktur data contoh yang disediakan:

var someObject = {
  part1: {
    name: "Part 1",
    size: "20",
    qty: "50",
  },
  part2: {
    name: "Part 2",
    size: "15",
    qty: "60",
  },
  part3: [
    {
      name: "Part 3A",
      size: "10",
      qty: "20",
    },
    {
      name: "Part 3B",
      size: "5",
      qty: "20",
    },
    {
      name: "Part 3C",
      size: "7.5",
      qty: "20",
    },
  ],
};

Untuk mengakses sifat "nama" bagi "bahagian1 " objek menggunakan laluan rentetan, anda akan menggunakan:

var part1name = Object.byString(someObject, "part1.name");
console.log(part1name); // Output: Part 1

Begitu juga, untuk mendapatkan semula sifat "qty" objek "part2":

var part2quantity = Object.byString(someObject, "part2.qty");
console.log(part2quantity); // Output: 60

Dan untuk mengakses sifat "nama" elemen pertama dalam tatasusunan "part3":

var part3name1 = Object.byString(someObject, "part3[0].name");
console.log(part3name1); // Output: Part 3A

Nota: Adalah penting untuk memberi awalan indeks tatasusunan berangka dengan kurungan segi empat sama ("[") dan akhirannya dengan kurungan segi empat sama dan noktah ("]."). Ini memastikan fungsi tersebut mengakses elemen tatasusunan dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Nilai Objek/Array JavaScript Bersarang Menggunakan Laluan 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