首頁 > web前端 > js教程 > 如何使用字串路徑存取嵌套的 JavaScript 物件/陣列值?

如何使用字串路徑存取嵌套的 JavaScript 物件/陣列值?

Linda Hamilton
發布: 2024-12-22 05:37:12
原創
937 人瀏覽過

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

使用字串路徑存取屬性和元素

問題:

如何從嵌套的JavaScript 物件或使用指定屬性或元素的字串路徑的陣列名字?

答:

使用純JavaScript,您可以透過以下輔助函數實現此目的:

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;
};
登入後複製

此函數有兩個參數:要導航的物件或數組,以及表示要導航的屬性或元素的字串路徑

範例:

讓我們使用提供的範例資料結構:

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",
    },
  ],
};
登入後複製

存取「part1」的「名稱」屬性"使用字串路徑的對象,您可以使用:

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

類似地,檢索「part2」物件的「qty」屬性:

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

並存取「part3」陣列中第一個元素的「name」屬性:

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

注意:使用方括號(“[”)作為數字數組索引的前綴,並使用方括號和句點作為後綴,這一點很重要(“]。”)。

以上是如何使用字串路徑存取嵌套的 JavaScript 物件/陣列值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板