4 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以將 Object.keys 與 map 結(jié)合起來,并使用 split 將字符串轉(zhuǎn)換為數(shù)組
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/

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
您想將密鑰轉(zhuǎn)換成什么?
如果想將其轉(zhuǎn)換為普通數(shù)組,則應(yīng)執(zhí)行以下操作。
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);
如果以上不是您想要的,請?jiān)俅胃膶懩膯栴}。

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
您可以使用字符串刪除第一個(gè)和最后一個(gè)slice(1,-1)字符split(/\s*,\s*/逗號,兩邊可選空格)。
然后將第一部分轉(zhuǎn)換為數(shù)字并返回?cái)?shù)組
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))

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果該部分已經(jīng)被引用會更容易company1,這樣您就可以使用JSON.parse. 事實(shí)上,讓我們這樣做吧!company1在帶有搜索和替換的部分周圍加上引號。
let key = `[3, company1]`;
let obj = JSON.parse(key.replace(/[$A-Z_]\w*/gi, '"$&"'))
console.log(obj);
注意:我在猜測哪些字符可能是有效的,并帶有一些看起來有點(diǎn)像 JavaScript 標(biāo)識符的字符。 [$A-Z_]\w*由于反序列化歧義,顯然不是逗號和右方括號。
添加回答
舉報(bào)