[英]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.