Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

180
Visualizações
¿Cuál es la mejor manera de transformar los nombres de los objetos al formato deseado?

¿Cuál es la mejor manera de asignar todas las propiedades del objeto a un nuevo formato de objeto con diferentes nombres de propiedad? Ejemplo:

este es el formato deseado

 const person = { firstName: 'john', lastName: 'doe', houses: [{ housName: 'Kruger' }] }

y tengo estos dos objetos

 const person1 = { prenom: 'john', //this should be mapped to the firstName nom: 'doe', //this should be mapped to the lastName houses: [{ house_name: 'Kruger' }] }
 const person2 = { name: 'john', // this should be mapped to the firstName familyName: 'doe', // this should be assigned to the lastName Houses: [{ House_Name: 'Kruger' }] };

El objetivo es hacer que person1 y person2 con todas sus propiedades y subpropiedades parezcan person.

YO HE TRATADO

 export class Person { @Expose({ name: 'prenom' }) firstName: string; @Expose({ name: 'nom' }) lastName: string; } } //this should give a formatted version from person1 ==> person const formatted = plainToClass(person1,Person)

Sin embargo, esto me obligaría a crear múltiples iteraciones de la clase Person, lo cual no es conveniente si queremos usar esta clase para escribir.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Primero, debe obtener todas las claves y valores de object mediante Object.entries(obj) , luego, en cada clave, debemos convertirla de pascal case a camel case , primero debemos cambiar la cadena a lower case luego con replace /_([az])/gi que capturan la primera letra después del guión bajo _ y la convierten en Upper case .

 str.toLowerCase().replace(/_([az])/gi, function (g) { return g[1].toUpperCase(); });

Luego, reduzca la matriz y conviértala de nuevo en un objeto.

 const mapToCamelCase = (obj) => { return Object.entries(obj).reduce((acc, [key,value]) => { var keyCamelCased = toCamelCase(key) acc[keyCamelCased] = value return acc }, {}) } 

 const person1 = { first_name: 'john', last_name: 'doe', houses: [{ house_name: 'Kruger' }] } const person2 = { First_Name: 'john', Last_Name: 'doe', Houses: [{ House_Name: 'Kruger' }] }; const toCamelCase = (str) => { return str.toLowerCase().replace(/_([az])/gi, function (g) { return g[1].toUpperCase(); }); } const mapToCamelCase = (obj) => { return Object.entries(obj).reduce((acc, [key,value]) => { var keyCamelCased = toCamelCase(key) acc[keyCamelCased] = value return acc }, {}) } console.log(mapToCamelCase(person1)) console.log(mapToCamelCase(person2))

about 4 years ago · Juan Pablo Isaza Relatório

0

Una función recursiva simple puede hacer la conversión de nombre que desee. Esto funcionará para entradas con cualquier profundidad de entradas.

Uso de Object.entries() y Object.fromEntries()

 const person1 = { first_name: "john", last_name: "doe", houses: [{ house_name: "Kruger" }], }; const person2 = { First_Name: "john", Last_Name: "doe", Houses: [{ House_Name: "Kruger" }], }; const person3 = { first_name: "john", last_name: "doe", houses: [ { house_name: "Kruger", phone_numbers: [{ ext_code: "+54", phone_number: 232242323 }], }, ], }; const formatName = (str) => { return str .split("_") .map( (w, index) => (index > 0 ? w[0].toUpperCase() : w[0].toLowerCase()) + w.substring(1) ) .join(""); }; const formatNames = (input) => { if (Array.isArray(input)) { return input.map((item) => formatNames(item)); } else if (typeof input === "object") { return Object.fromEntries( Object.entries(input).map(([key, value]) => [ formatName(key), formatNames(value), ]) ); } return input; }; console.log(formatNames(person1)); console.log(formatNames(person2)); console.log(formatNames(person3));

Nota: si convirtió la función formatName en un argumento para formatNames , formatNames es mucho más flexible, ya que se puede usar para formar objetos con formato de nombre diferente.

about 4 years ago · Juan Pablo Isaza Relatório

0

Mi solución será crear un archivo de clase como este

en persona.js

 class Person { constructor(personObj) { this.firstName = personObj.first_name, this.lastName = personObj.Last_Name, this.houses = personObj.Houses; } } const person1 = { first_name: 'john', last_name: 'doe', houses: [{ house_name: 'Kruger' }] } const formatted = new Person(person1)
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda