请帮助更改嵌套在字典中的键
您好,我是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"}}' } ] }
我们必须将键dash分开,而mykey,mykey2,mykey3,mykey3的价值是字符串形式,因此需要转换json。解析首先对象,然后再次将其转换回字符串,有人可以帮忙吗? 例如,用于MyKey的消息中的消息,这是一个字符串,对于键,数据,值再次为对象,这里键“我的名字为“ my-name-is”,“我的ed”,“我的ed”变为“我的我我的ed” -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)
Hello I am beginner in javascript it would be great if you could help me
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"}}' } ] }
here inside messaages of topicMessages in data part we have to make keys dash separated, and value for mykey, mykey2, mykey3 are in string form, so need to convert JSON.parse to object first and then again convert it back to string, can somebody please help,
eg for messages in for value of myKey, which is a string inside that for key, data, value which is again an object, here key "my name is" becomes "my-name-is", "my ed" becomes "my-ed"
I am trying to do using this,
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];
}
}
}
}
expected output:
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)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它很丑陋,但可以
看一看
It came out pretty ugly but it works
take a look