您好,我是 javascript 的初學者,如果您能幫助我,那就太好了
topicMessage = { topic: 'some_topic', messages: [{ 'myKey': '{"data": {"my name is ":"aman", "age": 22, "my ed": "btech"}, "meta": {"myAge":24, "school":"aps"}}' }, { 'myKey2': '{ "data": { "my name is 2": "aman", "age": 22, "my ed 2": "btech" }, "meta": { "myAge2": 24, "school": "aps" } } ' }, { "myKey3": '{"data": {"my name is 3":"aman", "age": 22, "my ed 3": "btech"}, "meta": {"myAge":24, "school":"aps"}}' } ] }
這里在資料部分 topicMessages 的訊息中,我們必須將鍵分隔開,mykey、mykey2、mykey3 的值是字串形式,所以需要先將 JSON.parse 轉換為物件,然后再將其轉換回字串,有人可以嗎請幫助,例如對于 myKey 的值中的訊息,這是一個字串,用于鍵、資料、值,它又是一個物件,這里鍵“我的名字是”變成了“我的名字”,“我的 ed”變成“my-ed”
我正在嘗試使用這個,
for(let i = 0; i < topicMessages.messages.length; i ){
for(const [key, value] of Object.entries(topicMessages.messages[i])){
for(const [key1, value1] of Object.entries(topicMessages.messages[i])){
if(key1.includes(" ")){
const newKey = key1.replace(/\s /g, "-")
topicMessages.messages[i][key]["data"][newkey] = topicMessages.messages[i][key]["data"][key1];
delete topicMessages.messages[i][key]["data"][key1];
}
}
}
}
預期輸出:
topicMessage = { topic: 'some_topic', messages: [{ 'myKey': '{"data": {"my-name-is ":"aman", "age": 22, "my-ed": "btech"}, "meta": {"myAge":24, "school":"aps"}}' }, { 'myKey2': '{ "data": { "my-name-is-2": "aman", "age": 22, "my-ed-2": "btech" }, "meta": { "myAge2": 24, "school": "aps" } } ' }, { "myKey3": '{"data": {"my-name-is-3":"aman", "age": 22, "my-ed-3": "btech"}, "meta": {"myAge":24, "school":"aps"}}' } ] }
顯示代碼片段
topicMessages = {
topic: 'some_topic',
messages: [{
'myKey': '{"data": {"my name is ":"aman", "age": 22, "my ed": "btech"}, "meta": {"myAge":24, "school":"aps"}}'
}, {
'myKey2': '{ "data": { "my name is 2": "aman", "age": 22, "my ed 2": "btech" }, "meta": { "myAge2": 24, "school": "aps" } } '
}, {
"myKey3": '{"data": {"my name is 3":"aman", "age": 22, "my ed 3": "btech"}, "meta": {"myAge":24, "school":"aps"}}'
}]
}
for (let i = 0; i < topicMessages.messages.length; i ) {
for (const [key, value] of Object.entries(topicMessages.messages[i])) {
for (const [key1, value1] of Object.entries(topicMessages.messages[i])) {
if (key1.includes(" ")) {
const newKey = key1.replace(/\s /g, "-")
topicMessages.messages[i][key]["data"][newkey] = topicMessages.messages[i][key]["data"][key1];
delete topicMessages.messages[i][key]["data"][key1];
}
}
}
}
console.log(topicMessages)
uj5u.com熱心網友回復:
結果很丑,但它有效
看一看
const topicMessage = {
topic: 'some_topic',
messages: [{
'myKey': '{"data": {"my name is ":"aman", "age": 22, "my ed": "btech"}, "meta": {"myAge":24, "school":"aps"}}'
}, {
'myKey2': '{ "data": { "my name is 2": "aman", "age": 22, "my ed 2": "btech" }, "meta": { "myAge2": 24, "school": "aps" } } '
}, {
"myKey3": '{"data": {"my name is 3":"aman", "age": 22, "my ed 3": "btech"}, "meta": {"myAge":24, "school":"aps"}}'
}]
}
const renameKeys = (data) =>
data.map(o =>
Object.keys(o).reduce((res, k) => {
const json = o[k]
const {data, ...rest} = JSON.parse(json)
return {
...res,
[k]: JSON.stringify({
...rest,
data: Object.keys(data).reduce((res, key) => {
return {
...res,
[key.replace(/\s /g, "-")]: data[key]
}
}, {})
})
}
}, {})
)
topicMessage.messages = renameKeys(topicMessage.messages)
console.log(topicMessage)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/473222.html
標籤:javascript 字典 解析 嵌套的 钥匙
上一篇:如何使用重復鍵從串列中撰寫字典
