Decidí aprender más sobre las funciones de mapeo y bucle de JavaScript haciendo objetos/matrices anidados. Ahora me topé con un problema que es algo similar a este pero mucho más complicado.
Acceder a elementos del objeto JSON sin conocer los nombres de las claves
aquí está mi JSON:
"employees": { "Gill Bates": { "position": "Software Engineer", "office": "Tokyo, Japan" }, "Jebron Lames": { "position": "Full-stack Developer", "office": "Manila, Philippines" } }y mi función accessJson , que es la famosa solución para objetos JSON anidados:
function accessJson(obj) { const result = []; for (const prop in obj) { const value = obj[prop]; if (typeof value === 'object') { result.push(toArray(value)); } else { result.push(value); } } return result; }El código funciona perfectamente bien para acceder al objeto JSON. Pero el problema es que obtengo un retorno que se ve así:
En el que necesitaba escribir otra función nuevamente para recortar y combinar esos caracteres solo para obtener la posición de cada empleado. ¿Hay alguna manera de obtener el puesto de todos los empleados sin especificar su nombre? Como una declaración de variable de una línea (no funciona) como esta:
let position = Object.keys(employees)[0].position;En el que puedo insertarlo dentro de mi bucle para poder eliminar mi función accessJson existente y reducir mi código.
EDITAR:
Por favor, no marque mi pregunta como duplicada. Creo que ya lo mencioné anteriormente que mi código está bien y funciona perfectamente. Lo que quería recibir comentarios es si podemos optimizar mi código en una declaración de una línea para que podamos deshacernos de la función accessJson y evitar la creación de otra función que recorte y combine esos caracteres solo para obtener la posición de cada empleado.
Mi pregunta y la función accessJson es similar a esto:
¿Cómo puedo acceder y procesar objetos anidados, matrices o JSON?
const data = { "employees": { "Gill Bates": { "position": "Software Engineer", "office": "Tokyo, Japan" }, "Jebron Lames": { "position": "Full-stack Developer", "office": "Manila, Philippines" } } }; const { employees } = data; const extract = (p) => Object.keys(employees).map(name => employees[name][p]); console.log('get every employees position', extract('position')); console.log('get every employees office', extract('office'));