猿问

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

从 http 响应中,我收到了一个这样的对象:

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

键是一个数组...打字稿中有没有办法转换键

"[3, company1]"

在这样的数组中

 [3, "company1"]

?


翻阅古今
浏览 145回答 4
4回答

慕码人2483693

您可以将 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/

MYYA

您想将密钥转换成什么?如果想将其转换为普通数组,则应执行以下操作。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);如果以上不是您想要的,请再次改写您的问题。

翻翻过去那场雪

您可以使用字符串删除第一个和最后一个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))

慕雪6442864

如果该部分已经被引用会更容易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*由于反序列化歧义,显然不是逗号和右方括号。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答