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

如何转换数组中的字符串?

如何转换数组中的字符串?

翻阅古今 2023-05-18 09:45:58
从 http 响应中,我收到了一个这样的对象:{"[3, company1]":["role_user"], "[4, company2]":["role_admin"] }键是一个数组...打字稿中有没有办法转换键"[3, company1]"在这样的数组中 [3, "company1"]?
查看完整描述

4 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

您可以将 Object.keys 与 map 结合起来,并使用 split 将字符串转换为数组


let data = {"[3, company1]":["role_user"], "[4, company2]":["role_admin"] }


let keys = Object.keys(data)

  .map(

    el => 

        el.replace('[', '')

        .replace(']', '')

        .split(',')

        .map(el => el.trim())

        .map(el => isNaN(parseFloat(el))

            ? el

            : parseFloat(el))

    )


console.log("Keys: ", keys)

这是小提琴: https: //jsfiddle.net/to38g6cb/1/


查看完整回答
反对 回复 2023-05-18
?
MYYA

TA贡献1868条经验 获得超4个赞

您想将密钥转换成什么?

如果想将其转换为普通数组,则应执行以下操作。

const httpResponse = {

  "[3, company1]": ["role_user"],

  "[4, company2]": ["role_admin"]

};


const convertedKeys = Object.keys(httpResponse).map(value => {

  let keyArray = value.replace("[", "").replace("]", "").split(", ");

  return [parseInt(keyArray[0]), keyArray[1]];

});


console.log(convertedKeys);

如果以上不是您想要的,请再次改写您的问题。



查看完整回答
反对 回复 2023-05-18
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

您可以使用字符串删除第一个和最后一个slice(1,-1)字符split(/\s*,\s*/逗号,两边可选空格)。


然后将第一部分转换为数字并返回数组


const input = {

  "[3, company1]": ["role_user"],

  "[4, company2]": ["role_admin"]

}


const output = Object.keys(input).map(k => {

  const [n, comp] = k.slice(1,-1).split(/\s*,\s*/)

  return [+n, comp]

})


console.log(JSON.stringify(output))


查看完整回答
反对 回复 2023-05-18
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

如果该部分已经被引用会更容易company1,这样您就可以使用JSON.parse. 事实上,让我们这样做吧!company1在带有搜索和替换的部分周围加上引号。


let key = `[3, company1]`;

let obj = JSON.parse(key.replace(/[$A-Z_]\w*/gi, '"$&"'))

console.log(obj);


注意:我在猜测哪些字符可能是有效的,并带有一些看起来有点像 JavaScript 标识符的字符。 [$A-Z_]\w*由于反序列化歧义,显然不是逗号和右方括号。


查看完整回答
反对 回复 2023-05-18
  • 4 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信