const person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};Estoy tratando de concatenar firstName y lastName para obtener otro objeto.
const person = {Name:"John Doe", age:50, eyeColor:"blue"};¿Cómo puedo hacer eso en javascript?
const person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}; const { firstName, lastName, ...restOfPerson } = person; const newPerson = { Name: `${firstName} ${lastName}`, ...restOfPerson }; console.log(newPerson);Creo que está buscando esto, puede desestructurar el objeto y obtener el nombre y el apellido y usar el objeto literal o la concatenación para crear su valor de Nombre.
Puedes usar un getter para obtener el nombre
¿Por qué deberíamos usar getter ? Puede imaginar esta situación, si asigna la propiedad Name , como de costumbre, generará setter y getter en eso, pero aparentemente, solo espera obtener valor.
Puede verificar el problema que mencioné con getter y setter a continuación (el fragmento de código está oculto)
let person = { firstName: "John", lastName: "Doe", age: 50, eyeColor: "blue" }; person = { ...person, Name: person.firstName + " " + person.lastName }; console.log(person.Name) // John Doe person.Name = "new name" //assign a new value console.log(person.Name) //it becomes `new name`! Así es como usamos getter en lugar de asignar valores
const person = { firstName: "John", lastName: "Doe", age: 50, eyeColor: "blue", get Name() { return this.firstName + " " + this.lastName } }; console.log(person.Name); //John Doe person.Name = "new name"; //try to assign a new name console.log(person.Name); //it's still `John Doe`! También puede agregar otra función como clase para inicializar la propiedad Name sin modificar el objeto original ( person )
const person = { firstName: "John", lastName: "Doe", age: 50, eyeColor: "blue" }; function PersonWithFullName(data) { return { ...data, get Name() { return this.firstName + " " + this.lastName } } } const updatedPerson = new PersonWithFullName(person) console.log({ person }) console.log({ updatedPerson })Podrías usar una clase de fábrica de personas:
const p1 = { firstName: 'John', lastName: 'Doe', age: 50, eyeColor: 'blue', }; class Person { constructor(person) { this.name = `${person.firstName} ${person.lastName}`; this.age = person.age; this.eyeColor = person.eyeColor; } } const person = new Person(p1); console.log(person);