从字符串中获取对象子对象的属性

时间:2018-03-03 23:36:45

标签: javascript

假设我有一个对象

var obj = {
   subObj : {
     value : 1
   }
};

有没有办法让obj.subObj.value使用一个复杂的属性名字符串转到子对象?

示例(不起作用)

var attr = "subObj.value";
return obj[attr]; 

2 个答案:

答案 0 :(得分:1)

不,你不能。

您可以拆分并遍历每个attr。

var obj = {
   subObj : {
     value : 1
   }
};

var attr = "subObj.value";

var result = obj;
attr.split('.').forEach((c) => result = result[c]);

console.log(result);

或者您可以使用reduce:

var obj = {
   subObj : {
     value : 1
   }
};

var attr = "subObj.value";
var result = attr.split('.').reduce((a, c) => a[c], obj);
console.log(result);

答案 1 :(得分:1)

在JavaScript中没有任何表示法,但您可以使用以下内容:

var obj = {
   subObj : {
     value : 1
   }
};
var attr = "subObj.value";
var result = attr.split(".").reduce((a, c) => a[c], obj);
console.log(result)