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]={}});
添加回答
舉報