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

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

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

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

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