Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

300
Views
¿Cómo concatenar múltiples propiedades del mismo elemento de una matriz?

Tengo una matriz con información personal como nombres y edades. Quiero combinar algunas de esas propiedades para crear una nueva propiedad para cada elemento de la matriz.

De esta matriz:

 var list = [{name: "James", lastName: "M.", age: 58}, {name: "Rachel", lastName: "W.", age: 51}];

He creado una nueva entrada con:

 list.forEach(function(itm){ itm.username = {...list.firstName, ...list.last}; });

Quiero combinar list.firstName con list.lastName para crear list.username . list.username consistiría en una concatenación de list.firstName y list.lastName .

Intenté usar el operador .assign() sin éxito, solo da como resultado TypeError: Cannot read property '0' of undefined . Por alguna razón, recibo el mismo mensaje de error cuando intento simplemente ver las propiedades de la matriz individual a través console.log(list.firstName[0]); .

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Supongo que esto es javascript (basado en la etiqueta de la pregunta). En cuyo caso, el código que intenta ejecutar parece incorrecto.

Solución a la pregunta

 var list = [{firstName: "James", lastName: "M.", age: 58}, {firstName: "Rachel", lastName: "W.", age: 51}]; list.forEach((entry) => { entry.fullName = entry.firstName + " " + entry.lastName; }); console.log(list[0].fullName);

En esta solución, simplemente estoy recorriendo todos los elementos de la matriz y asignando una nueva propiedad "fullName" con los valores de la propiedad del elemento.

Hay varias formas de hacerlo, esta es solo la forma más sencilla de aclarar su comprensión.

Para mostrar la propiedad individual

 console.log(list[0].firstName);

Tenga en cuenta que el descriptor de acceso del índice de la matriz se encuentra después de la list de nombres de la matriz y no después del nombre del atributo/propiedad firstName en este caso.

Además, en su código proporcionado no hay un atributo firstName , por lo tanto, tenga algunos controles en su lugar; de lo contrario, usará un valor undefined y podría arrojar algún error según su entorno de desarrollo.

Atributo calculado (obtador de acceso)

También debe pensar en cómo se comportarán los datos de la matriz si cambia el valor de los atributos/propiedades.

Por ejemplo, si cambia el atributo/propiedad firstName , entonces debe recordar actualizar también el atributo/propiedad fullName , de lo contrario, no estarán sincronizados.

La forma más eficiente de realizar esta tarea es tener el atributo/propiedad como un atributo/propiedad computado (piense en funciones o captadores más precisos)

Código de muestra

 var list = [{ firstName: "James", lastName: "M.", age: 58, get fullName() { return this.firstName + " " + this.lastName; }, }, { firstName: "Rachel", lastName: "W.", age: 51, get fullName() { return this.firstName + " " + this.lastName; }, }]; console.log(list[0].fullName);

Puede obtener más información sobre getters y setters en JavaScript Accessors (Getters and Setters)

about 4 years ago · Juan Pablo Isaza Report

0

Veo dos errores en tu código.

  1. La clave para el nombre es 'nombre' en su lista de objetos y ha estado intentando usar 'nombre' mientras concatena.

  2. Ha estado tratando de fusionar las propiedades de los objetos en el bucle for, donde necesita fusionar los valores.

Aquí está la solución:

 var list = [{firstName: "James", lastName: "M.", age: 58}, {firstName: "Rachel", lastName: "W.", age: 51}]; list.forEach(function(itm){ itm.username = itm.firstName + " " + itm.lastName; }); console.log(list)

Dado que los objetos están en la lista, deberá proporcionar un índice para acceder al objeto y sus valores.

Ejemplos:

 console.log(list[0].username)

O para obtener solo la lista de nombres de usuario, puede usar:

 userNames = list.map(function(obj) { return obj.username; }); console.log(userNames)
about 4 years ago · Juan Pablo Isaza Report

0

Bueno, no hay una propiedad llamada list.firstName , creo que te refieres a list.name .

La solución es crear un nuevo objeto llamado list.username y combinar list.name y list.lastName y, dado que está dentro de la función forEach , list se llamará itm . Por lo tanto, será itm.name e itm.lastName .

También he añadido + " " + para crear un espacio entre el primer nombre y el segundo nombre.

 var list = [{name: "James", lastName: "M.", age: 58}, {name: "Rachel", lastName: "W.", age: 51}]; list.forEach(function(itm) { list.username = itm.name + " " + itm.lastName; console.log(list.username); /** James M. Rachel W. **/ });

Además de que no hay una propiedad llamada list.firstName , no puede acceder a list.firstName , intente acceder a otra también.

 var list = [{name: "James", lastName: "M.", age: 58}, {name: "Rachel", lastName: "W.", age: 51}]; console.log(list[0].name); // James

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!