4 回答

TA贡献1775条经验 获得超8个赞
尝试这个
let user = "req.user.role";
let userObj = user.split('.').reduceRight((obj, next) => ({
[next]: obj
}), {});
console.log(userObj);
或者这个,对于旧浏览器
var user = "req.user.role";
var userArray = user.split('.'), userObj = {}, temp = userObj;
for (var i = 0; i < userArray.length; i++) {
temp = temp[userArray[i]] = {};
}
console.log(userObj);

TA贡献1884条经验 获得超4个赞
我将对此进行尝试:
let user = "req.user.role"
const trav = (str, o) => {
const m = str.split('.')
let res = undefined
let i = 0
while (i < m.length) {
res = (res || o)[m[i]]
if (!res) break
i++
}
return res
}
const val = trav(user, {
req: {
user: {
role: "admin"
}
}
})
console.log(val)
此函数将遍历传入的对象,以提供提供的 string.split "." 的整个长度。返回值或未定义的列表。

TA贡献1805条经验 获得超10个赞
该函数getvalue()将返回给定全局变量的嵌套属性:
var user="req.user.role";
var req={user:{role:"admin"}};
function getvalue(str){
return str.split('.').reduce((r,c,i)=>i?r[c]:window[c], '');
}
console.log(getvalue(user));

TA贡献1802条经验 获得超10个赞
你可以这样做:
let userSplitted = "req.user.role".split('.');
let obj, o = obj = {};
userSplitted.forEach(key=>{o=o[key]={}});
添加回答
举报