Мои данные объекта JSON :
{
"title": "aa",
"desc": ["i", "j", "k"],
"cnt": {
"head": "bb",
"main": {
"num1": {
"time1": "mm",
"time2": "kk"
},
"num2": "dd"
}
}
}
Мой вопрос: как мне перевести указанный выше объект JSON в приведенный ниже с помощью JavaScript?
{
"title": "aa",
"desc": ["i", "j", "k"],
"cnt_head": "bb",
"cnt_main_num1_time1": "mm",
"cnt_main_num1_time2": "kk",
"cnt_main_num2": "dd"
}
Я пробовал использовать for(i in obj) {....}, но не смог!
Пожалуйста помоги!
Если вы пытались использовать for(i in obj) {....}, лучшим способом поставить эту проблему было бы показать эти попытки, как они терпят неудачу, и попросить о конкретной помощи.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы в основном спрашиваете, как сгладить вложенный объект с ключами, представляющими вложенный путь. Вот небольшая рекурсивная функция, которая делает именно это:
const flatten = (o, pre) => Object.entries(o).reduce((a, [k, v]) => (
key = pre ? `${pre}_${k}`: k,
{
...a,
...Object.getPrototypeOf(v) !== Object.prototype ? {[key]: v} : flatten(v, key)
}), {});
Полный фрагмент:
const o = {
"title": "aa",
"desc": ["i", "j", "k"],
"cnt": {
"head": "bb",
"main": {
"num1": {
"time1": "mm",
"time2": "kk"
},
"num2": "dd"
}
}
};
const flatten = (o, pre) => Object.entries(o).reduce((a, [k, v]) => (
key = pre ? `${pre}_${k}`: k,
{
...a,
...Object.getPrototypeOf(v) !== Object.prototype ? {[key]: v} : flatten(v, key)
}), {});
console.info(flatten(o));это решило мою проблему, большое вам спасибо! Надеюсь, это поможет и другим парням.
Опубликованный вопрос, похоже, вообще не включает любая попытка для решения проблемы. StackOverflow ожидает, что вы попробуй сначала решить свою проблему, поскольку ваши попытки помогают нам лучше понять, чего вы хотите. Измените вопрос, чтобы показать, что вы пробовали, и проиллюстрировать конкретное препятствие, с которым вы столкнулись с минимальный воспроизводимый пример. Для получения дополнительной информации см. Как спросить и возьмите тур.