4 回答

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/

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);
如果以上不是您想要的,請再次改寫您的問題。

TA貢獻2065條經驗 獲得超14個贊
您可以使用字符串刪除第一個和最后一個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))

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*由于反序列化歧義,顯然不是逗號和右方括號。
添加回答
舉報