在 JavaScript 中使用字符串名称设置嵌套对象属性
在 JavaScript 中,访问和修改对象属性对于管理数据至关重要。但是,如果您仅以字符串形式提供属性名称而不是其直接键序列,该怎么办?当属性作为用户输入动态生成或接收的情况下,可能会出现这种情况。
考虑以下对象:
var obj = {};
和属性名称:
var propName = "foo.bar.foobar";
要设置 obj.foo.bar.foobar 的值,传统上您可以使用以下命令语法:
obj.foo.bar.foobar = "hello world";
但是,这种方法需要手动遍历链中的每个属性,这可能会变得繁琐且容易出错,尤其是对于深度嵌套的属性。
递归属性赋值函数
为了解决这个挑战,可以实现一个名为 allocate 的递归函数来简化赋值过程:
function assign(obj, prop, value) { if (typeof prop === "string") prop = prop.split("."); if (prop.length > 1) { var e = prop.shift(); assign(obj[e] = Object.prototype.toString.call(obj[e]) === "[object Object]" ? obj[e] : {}, prop, value); } else obj[prop[0]] = value; }
该函数接受一个对象(obj)、一个字符串形式的属性名称(prop)以及一个要赋给该属性的值(value)。它递归地遍历对象层次结构并将适当的属性设置为指定值。
用法
使用 allocate 设置 obj.foo.bar.foobar 的值function:
var obj = {}, propName = "foo.bar.foobar"; assign(obj, propName, "Value");
此代码将创建必要的嵌套属性并设置obj.foo.bar.foobar 为“Value”。
通过利用递归属性赋值函数,您可以使用字符串名称动态访问和修改 JavaScript 中的嵌套对象属性,为复杂数据结构提供灵活且可扩展的解决方案.
以上是如何使用字符串名称设置嵌套 JavaScript 对象属性?的详细内容。更多信息请关注PHP中文网其他相关文章!