猿问

从字符串 JavaScript 创建嵌套对象

我有一个这样的字符串:

let user = "req.user.role"

有没有办法将它转换为嵌套对象,以便在这样的另一个值中使用?

let converted_string = req.user.role

我知道我可以用user.split(".")拆分用户

我的想象:

let user = "req.user.role".split(".")
let converted_string = user[0].user[1].user[2]

我找到了与我的问题相关的最接近的答案:Create nested object from query string in Javascript


慕雪6442864
浏览 168回答 4
4回答

www说

尝试这个let user = "req.user.role";let userObj = user.split('.').reduceRight((obj, next) => ({&nbsp; [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++) {&nbsp; temp = temp[userArray[i]] = {};}console.log(userObj);

慕村9548890

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

holdtom

该函数getvalue()将返回给定全局变量的嵌套属性:var user="req.user.role";var req={user:{role:"admin"}};function getvalue(str){&nbsp; return str.split('.').reduce((r,c,i)=>i?r[c]:window[c], '');}console.log(getvalue(user));

守候你守候我

你可以这样做:let userSplitted = "req.user.role".split('.');let obj, o = obj = {};userSplitted.forEach(key=>{o=o[key]={}});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答