首页 >web前端 >js教程 >如何使用字符串路径访问嵌套的 JavaScript 对象/数组值?

如何使用字符串路径访问嵌套的 JavaScript 对象/数组值?

Linda Hamilton
Linda Hamilton原创
2024-12-22 05:37:12972浏览

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”的“name”属性" 使用字符串路径的对象,您可以使用:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn