<分区>
如果我使用变量作为键,如何访问多级属性?
这是行不通的:
var obj = {
first: {thirst: "yo"},
second: {beckon: "dud"}
}
var key = "first.thirst";
var result = obj[key];
标签 javascript
<分区>
如果我使用变量作为键,如何访问多级属性?
这是行不通的:
var obj = {
first: {thirst: "yo"},
second: {beckon: "dud"}
}
var key = "first.thirst";
var result = obj[key];
最佳答案
当您在 JavaScript 中使用字符串作为属性名称时,没有任何字符是禁止使用的:包括句点。所以你可以很容易地拥有一个像这样的对象属性:
var o = {
'first.second.third': 'value';
}
鉴于此,显然无法实现您的解决方案。
但是,只要您不在属性命名中使用句点,就可以创建一个函数来执行此操作:
function resolve(obj, path){
path = path.split('.');
var current = obj;
while(path.length) {
if(typeof current !== 'object') return undefined;
current = current[path.shift()];
}
return current;
}
然后你可以调用:
var key = "first.thirst";
var result = resolve(obj, key);
关于JavaScript:使用变量访问对象多级属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24221803/
相关文章:
来自 AJAX 调用的 javascript 函数响应返回未定义
javascript - 从 Google Chart 中的 DataView 类获取值到 JavaScript 数组
javascript - 当用户在文本区域唯一数据中输入时更改处理程序值
javascript - 通过gapi.signin2.render按钮的Google OAuth未在React应用程序中触发回调
javascript - 结合两个 html 选择与 jquery
javascript - 数组中子元素的 AngularJS 过滤器列表