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

243
Vistas
¿Cómo empujar todos los elementos de una matriz de objetos a una matriz?

Estoy tratando de extraer y empujar los elementos de una matriz de objetos a un objeto vacío. Aquí está el ejemplo de las matrices.

 const products = ["cars", "phones", "laptops"]; const productArrayOfObj = [ { cars: ["Ford", "Chevy", "Honda", "Toyota"], }, { phones: ["iPhone", "Samsung", "Nokia", "Sony"], }, { laptops: ["Mac", "Dell", "HP", "Acer"], }, ]; const mappedProducts= products.map((_,i) => productArrayOfObj[i]);

Desde mappedProducts devuelve esta estructura, aunque no estoy seguro de si esta es la forma correcta de mapear esto.

 [ { cars: [ 'Ford', 'Chevy', 'Honda', 'Toyota' ] }, { phones: [ 'iPhone', 'Samsung', 'Nokia', 'Sony' ] }, { laptops: [ 'Mac', 'Dell', 'HP', 'Acer' ] } ]

Mi matriz deseada se vería así

 [ 'Ford', 'Chevy', 'Honda', 'Toyota','iPhone', 'Samsung', 'Nokia', 'Sony','Mac', 'Dell', 'HP', 'Acer' ]

La forma en que estoy tratando de implementarlo, devuelve un resultado incorrecto.

 const arrayToPush = [] const getArrayEl = mappedProducts && mappedProducts.map(item => { for(let key in item){ arrayToPush.push(item[key]) } return arrayToPush })

Cualquier ayuda será apreciada

 const names = ["cars", "phones", "laptops"]; const nameArrayOfObj = [ { cars: ["Ford", "Chevy", "Honda", "Toyota"], }, { phones: ["iPhone", "Samsung", "Nokia", "Sony"], }, { laptops: ["Mac", "Dell", "HP", "Acer"], }, ]; const mappedProducts = names && nameArrayOfObj && names.map((_,i) => nameArrayOfObj[i]); console.log("mappedProducts", mappedProducts); const arrayToPush = [] const getArrayEl = mappedProducts && mappedProducts.map(item => { for(let key in item){ arrayToPush.push(item[key]) } return arrayToPush }) console.log("getArrayEl", getArrayEl);

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Puede usar dos llamadas .flatMap() para recorrer su matriz de objetos de productos y luego una interna para recorrer sus name de la matriz de products . Para cada name , puede tomar la matriz asociada del objeto en ese nombre:

 const products = ["cars", "phones", "laptops"]; const productArrayOfObj = [ { cars: ["Ford", "Chevy", "Honda", "Toyota"], }, { phones: ["iPhone", "Samsung", "Nokia", "Sony"], }, { laptops: ["Mac", "Dell", "HP", "Acer"], }, ]; const res = productArrayOfObj.flatMap(obj => products.flatMap( name => obj[name] ?? [] )); console.log(res);

Si sus objetos solo pueden contener un par de matriz de claves, entonces puede cambiar su .flatMap() interno a un .find() para encontrar la clave que se usa en el objeto:

 const products = ["cars", "phones", "laptops"]; const productArrayOfObj = [ { cars: ["Ford", "Chevy", "Honda", "Toyota"], }, { phones: ["iPhone", "Samsung", "Nokia", "Sony"], }, { laptops: ["Mac", "Dell", "HP", "Acer"], }, ]; const res = productArrayOfObj.flatMap(obj => { const key = products.find(name => obj.hasOwnProperty(name)); return key ? obj[key] : []; }); console.log(res);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Implementación Array.flatMap .

Lógica

  • Recorra la matriz de names con Array.flatMap .
  • Acceda a cada clave desde nameArrayOfObj .

Esta implementación hace uso de un supuesto de que ambas matrices están en el mismo orden.

violín de trabajo

 const names = ["cars", "phones", "laptops"]; const nameArrayOfObj = [ { cars: ["Ford", "Chevy", "Honda", "Toyota"] }, { phones: ["iPhone", "Samsung", "Nokia", "Sony"] }, { laptops: ["Mac", "Dell", "HP", "Acer"] }, ]; const mappedProducts = names.flatMap((name, i) => nameArrayOfObj[i][name] ? nameArrayOfObj[i][name] : []); console.log(mappedProducts);

Si no puede garantizar que las matrices estén en el mismo orden, puede utilizar esta lógica.

  • Bucle a través de names Array.
  • Encuentre un elemento de la matriz nameArrayOfObj con la clave en names Array.

violín de trabajo

 const names = ["cars", "phones", "laptops"]; const nameArrayOfObj = [ { cars: ["Ford", "Chevy", "Honda", "Toyota"] }, { phones: ["iPhone", "Samsung", "Nokia", "Sony"] }, { laptops: ["Mac", "Dell", "HP", "Acer"] }, ]; const mappedProducts = names.flatMap((name, i) => { const matchingNode = nameArrayOfObj.find(item => item.hasOwnProperty(name)); return matchingNode ? matchingNode[name] : []; }); console.log(mappedProducts);

about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Es esta tu solución? Usando las claves de products y flatMap()

 const products = ["cars", "phones", "laptops"]; const productArrayOfObj = [ { cars: ["Ford", "Chevy", "Honda", "Toyota"], }, { phones: ["iPhone", "Samsung", "Nokia", "Sony"], }, { laptops: ["Mac", "Dell", "HP", "Acer"], }, ]; const mappedProducts= products.flatMap((_,i) => productArrayOfObj[i][_]); console.log(mappedProducts)

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