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

299
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 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