为了账号安全,请及时绑定邮箱和手机立即绑定

从字符串 JavaScript 创建嵌套对象

从字符串 JavaScript 创建嵌套对象

慕雪6442864 2022-10-21 09:30:25
我有一个这样的字符串: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
查看完整描述

4 回答

?
www说

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


查看完整回答
反对 回复 2022-10-21
?
慕村9548890

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 "." 的整个长度。返回值或未定义的列表。



查看完整回答
反对 回复 2022-10-21
?
holdtom

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


查看完整回答
反对 回复 2022-10-21
?
守候你守候我

TA贡献1802条经验 获得超10个赞

你可以这样做:


let userSplitted = "req.user.role".split('.');

let obj, o = obj = {};


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


查看完整回答
反对 回复 2022-10-21
  • 4 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号