繁体   English   中英

从字符串 JavaScript 创建嵌套的 object

[英]create nested object from string 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

尝试这个

 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);

function 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));

我将对此进行尝试:

 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)

这个 function 将遍历传入的 object 提供的 string.split "." 的整个长度。 返回值或未定义的列表。

你可以这样做:

let userSplitted = "req.user.role".split('.');
let obj, o = obj = {};

userSplitted.forEach(key=>{o=o[key]={}});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM