Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

134
Vistas
Convertir objeto en matriz de propiedades

Necesito convertir objeto:

 { middleName: null, name: "Test Name", university: { country: { code: "PL" }, isGraduated: true, speciality: "Computer Science" } }

a la matriz:

 [{ key: "name", propertyValue: "Test Name", }, { key: "middleName", propertyValue: null, }, { key: "university.isGraduated", propertyValue: true, }, { key: "university.speciality", propertyValue: "Computer Science", }, { key: "university.country.code", propertyValue: "PL" }];

Escribí un algoritmo, pero es bastante tonto, ¿cómo puedo mejorarlo? Importante, si el objeto tiene un objeto anidado, entonces necesito escribir el objeto anidado a través de un punto (por ejemplo, universidad.país: "valor")

 let arr = []; Object.keys(parsedObj).map((key) => { if (parsedObj[key] instanceof Object) { Object.keys(parsedObj[key]).map((keyNested) => { if (parsedObj[key][keyNested] instanceof Object) { Object.keys(parsedObj[key][keyNested]).map((keyNestedNested) => { arr.push({ 'key': key + '.' + keyNested + '.' + keyNestedNested, 'propertyValue': parsedObj[key][keyNested][keyNestedNested] }) }) } else { arr.push({ 'key': key + '.' + keyNested, 'propertyValue': parsedObj[key][keyNested] }) } }) } else { arr.push({ 'key': key, 'propertyValue': parsedObj[key] }) } });

Gracias

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Implementación de una función recursiva.

He considerado que su objeto consiste solo en una cadena y un objeto como valores. Si tiene más tipos de tipos de datos como sus valores, es posible que tenga que desarrollar esta función.

 const myObj = { middleName: null, name: "Test Name", university: { country: { code: "PL" }, isGraduated: true, speciality: "Computer Science" } } const myArr = []; function convertObjectToArray(obj, keyPrepender) { Object.entries(obj).forEach(([key, propertyValue]) => { if (typeof propertyValue === "object" && propertyValue) { const updatedKey = keyPrepender ? `${keyPrepender}.${key}` : key; convertObjectToArray(propertyValue, updatedKey) } else { myArr.push({ key: keyPrepender ? `${keyPrepender}.${key}` : key, propertyValue }) } }) } convertObjectToArray(myObj); console.log(myArr);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Escribí una versión pequeña usando la función recursiva y otra para la validación es un objeto.

 let values = { middleName: null, name: "Test Name", university: { country: { code: "PL" }, isGraduated: true, speciality: "Computer Science" } } function isObject(obj) { return obj != null && obj.constructor.name === "Object" } function getValues(values) { let arrValues = Object.keys(values).map( v => { return { key: v, value: isObject(values[v]) ? getValues(values[v]) : values[v] }; }); console.log(arrValues); } getValues(values);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Esto es lo más a prueba de balas que pude hacer: D, sin necesidad de una variable global, ¡solo lo tomas y lo usas donde quieras!

 const test = { middleName: null, name: "Test Name", university: { country: { code: "PL" }, isGraduated: true, speciality: "Computer Science" } }; function toPropertiesByPath(inputObj) { let arr = []; let initialObj = {}; const getKeys = (obj, parentK='') => { initialObj = arr.length === 0 ? obj: initialObj; const entries = Object.entries(obj); for(let i=0; i<entries.length; i++) { const key = entries[i][0]; const val = entries[i][1]; const isRootElement = initialObj.hasOwnProperty(key); parentK = isRootElement ? key: parentK+'.'+key; if(typeof val === 'object' && val!==null && !Array.isArray(val)){ getKeys(val, parentK); } else { arr.push({ key: parentK, property: val }); } } }; getKeys(inputObj); return arr; } console.log(toPropertiesByPath(test));

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda