gpt4 book ai didi

Javascript:使用动态变量名称访问 JSON 数据中的嵌套值

转载 作者:可可西里 更新时间:2023-11-01 02:34:30 26 4
gpt4 key购买 nike

我有一个嵌套的 Javascript 对象,例如

var data = { 'name':    { 'heading': 'Name', 'required': 1, 'type': 'String' },
'profile': {
'age': { 'heading': 'Age', 'required': 0, 'type': 'Number' },
'phone': { 'heading': 'Phone', 'required': 0, 'type': 'String'},
'city': { 'heading': 'City', 'required': 0, 'type': 'String'},
},
'status': { 'heading': 'Status', 'required': 1, 'type': 'String' }
};

在这里,我可以访问 data.profile.age.type 或 data.name.type 字段。没有问题如果我有动态变量名,我可以按如下方式访问。同样,没问题。

f = 'profile'; data[f].age.type

但是,这里我有变量名称,如“name”、“profile.age”、“profile.city”等,显然我无法访问它们作为 f = 'profile.age'; data[f].type 将不起作用。

谁能指导我如何以最直接、最简单的方式访问它们(获取/设置)?

注意:我试过了,它适用于 get。

data.get = function(p) { o = this; return eval('o.'+p); };
f = 'profile.age'; data.get(f).name;

虽然set好像还不够简单。如果还有更好的 get 和 set 解决方案,请告诉我。

最佳答案

除非绝对必要,否则不要使用eval。 :) 至少在这种情况下,有更好的方法来做到这一点——您可以将嵌套名称拆分为单独的部分并迭代它们:

data.get = function(p) {
var obj = this;

p = p.split('.');
for (var i = 0, len = p.length; i < len - 1; i++)
obj = obj[p[i]];

return obj[p[len - 1]];
};

data.set = function(p, value) {
var obj = this;

p = p.split('.');
for (var i = 0, len = p.length; i < len - 1; i++)
obj = obj[p[i]];

obj[p[len - 1]] = value;
};

关于Javascript:使用动态变量名称访问 JSON 数据中的嵌套值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4431641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com