как получить пару ключ-значение словаря / объектов во вложенном словаре в javascript?

#javascript #object

#javascript #объект

Вопрос:

Я пытаюсь создать приложение для флэш-карт, чтобы попытаться упростить данные. Я думаю, что это не очень сложное сомнение, но я не могу найти ответ от Google.

  1. Я хочу, чтобы из вложенного словаря отображались только URL-адрес ключа и значение
  2. Я хочу отобразить маршрут в виде карты со стрелками, например: abcd->cd->d->url:value

мои данные, например:

 abcd = {
"ab": {
    "a": {
        "country": "",
        "url": ""
    },
    "b": {
        "country": "",
        "url": ""
    }
},
"cd": {
    "c": {
        "country": "",
        "url": ""
    },
    "d": {
        "country": "",
        "url": "value"
    }
}
 

Комментарии:

1. Что вы пробовали до сих пор?

2. Я не уверен, с чего начать. Я знаю об object.keys(), но я не могу понять, как его применить…

3. к вложенным словарям

4. Object.keys вернет вам массив ключей «ab», «cd»… -> затем вы можете выполнить forEach для перебора ключей и выполнить ту же логику с вложенными ключами

5. Я не уверен, как я могу выполнить рекурсию с помощью forEach() для многих уровней вложенности, и я не уверен, даже если я смогу выполнить рекурсию, как назначить требуемый вывод переменной в виде строки.

Ответ №1:

Вы можете использовать приведенный ниже код, который работает только для этого объекта…

Обратите внимание, что есть много лучших способов, которыми вы можете подойти к этому .. это достаточно простой

 let abcd = {
"ab": {
    "a": {
        "country": "",
        "url": "fff"
    },
    "b": {
        "country": "",
        "url": "fff"
    }
},
"cd": {
    "c": {
        "country": "",
        "url": "ddd"
    },
    "d": {
        "country": "",
        "url": "value"
    }
}
}

function getKeyValue(obj){
      const result = []
      for(let prop in obj){

            if(typeof obj[prop] === "object"){
                  for(let pr in obj[prop]){
                   result.push(`${prop}->${pr}->url->${obj[prop][pr].url }`)
                  }
             
            }

      }
      return result

}
    
console.log(getKeyValue(abcd)) 

Комментарии:

1. Мне было интересно рекурсивное решение, потому что я не могу использовать только 4 уровня вложенности… Я не знаю, как назначить много имен переменных… единственное, что я могу придумать, это присвоить переменной значение: for(пусть i=0;i<*я не знаю, как это найти *;i ){пусть a i= имя отдельного ключа}