Итерируйте ключи объекта и получайте ключи внутреннего объекта в один массив - PullRequest
1 голос
/ 17 марта 2020

Я пытаюсь получить ключи Object.keys все в один массив, но у меня возникают некоторые трудности.

В настоящее время я пытаюсь это сделать, но я получаю массив каждого из ключей объекта Object.keys(myObject).map(x=>Object.keys(myObject[x]))

Объект:

    {
   "a1G0R000002Sv15UAC":{
      "a1K0R000000ytEsUAI":{ <---
         "test2_2":"test2"
      }
   },
   "a1G0R000002SvdYUAS":{
      "a1K0R000000yu8EUAQ":{ <---
         "test2_2":"test2"
      },
      "a1K0R000000ytEsUAI":{ <---
         "string_1":"test"
      }
   },
   "a1G0R000002T4NIUA0":{
      "a1K0R000000ytEsUAI":{ <---
         "string_1":"test"
      }
   }
}

Требуемый массив: ["a1K0R000000ytEsUAI","a1K0R000000yu8EUAQ","a1K0R000000ytEsUAI","a1K0R000000ytEsUAI"]

Ответы [ 3 ]

1 голос
/ 17 марта 2020

Вы можете использовать flat для преобразования результата в один массив "

const myObject =     {
   "a1G0R000002Sv15UAC":{
      "a1K0R000000ytEsUAI":{ 
         "test2_2":"test2"
      }
   },
   "a1G0R000002SvdYUAS":{
      "a1K0R000000yu8EUAQ":{ 
         "test2_2":"test2"
      },
      "a1K0R000000ytEsUAI":{ 
         "string_1":"test"
      }
   },
   "a1G0R000002T4NIUA0":{
      "a1K0R000000ytEsUAI":{ 
         "string_1":"test"
      }
   }
}

const keys = Object.keys(myObject).map(key => Object.keys(myObject[key])).flat();

console.log(keys)
0 голосов
/ 17 марта 2020

Использование map

Object.entries(myObject).map(x => Object.keys(x[1])).flat()
0 голосов
/ 17 марта 2020

Вам нужно будет использовать 2 for..in петли. Проще говоря, for..in l oop перебирает ключ объекта. Для получения дополнительной информации вы можете взглянуть на MDN do c.

const originalObject = {
   "a1G0R000002Sv15UAC":{
      "a1K0R000000ytEsUAI":{ 
         "test2_2":"test2"
      }
   },
   "a1G0R000002SvdYUAS":{
      "a1K0R000000yu8EUAQ":{ 
         "test2_2":"test2"
      },
      "a1K0R000000ytEsUAI":{ 
         "string_1":"test"
      }
   },
   "a1G0R000002T4NIUA0":{
      "a1K0R000000ytEsUAI":{ 
         "string_1":"test"
      }
   }
}

const desiredArray = []

for (let i in originalObject) {
  for(let j in originalObject[i]) {
    desiredArray.push(j)
  }
}

console.log(desiredArray)
...