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

303
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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