假设我有一个对象
var obj = {
subObj : {
value : 1
}
};
有没有办法让obj.subObj.value
使用一个复杂的属性名字符串转到子对象?
示例(不起作用)
var attr = "subObj.value";
return obj[attr];
答案 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)