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

270
Vistas
ReactJs ¿Cómo mapear el campo de una matriz en una nueva matriz?

Soy nuevo en javascript y reacciono y estoy trabajando en mi primer mini proyecto, pero no puedo encontrar la manera de resolver esto.

En cada modelo de "Pedido" tengo este campo de matriz llamado "artículos de pedido" que contiene una matriz de modelos de productos y dentro de cada modelo de producto hay un campo llamado "tienda". Quiero obtener el valor de "compra" para todos los productos en orderItems y agregarlo a una nueva matriz en el modelo "Pedido"

Aquí está mi esquema:

 { orderItems: [ { name: 'abc', quantity: 1, shop: 'abc', image: '/images/cake.jpg', price: 50, _id: new ObjectId("62dbb03e90c4ca14ee3e06fd") }, { name: 'def', quantity: 1, shop: 'def', image: '/images/cake.jpg', price: 50, _id: new ObjectId("62dbb03e90c4ca14ee3e06fd") } ], sellers: [], shippingAddress: { fullName: '123', address: '123', city: '123', postalCode: '123', country: '123' }, paymentMethod: 'Paypal', itemsPrice: 50, shippingPrice: 10, totalPrice: 60, buyer: new ObjectId("62d6e48d8cd5cd2e62f6aeae"), _id: new ObjectId("62dbcf88cf1bc8fc7b85cc0b"), __v: 0 }

Así que quiero obtener 'abc' y 'def' de la matriz orderItems y completarla en la matriz de vendedores. Puedo obtener los valores, pero ¿cómo los lleno en la matriz de vendedores en el mismo modelo?

este es mi codigo api

 orderRouter.post( '/', isAuth, expressAsyncHandler(async(req, res) => { const newOrder = new Order({ orderItems: req.body.orderItems.map((x) => ({ ...x, product: x._id })), shippingAddress: req.body.shippingAddress, paymentMethod: req.body.paymentMethod, itemsPrice: req.body.itemsPrice, shippingPrice: req.body.shippingPrice, totalPrice: req.body.totalPrice, buyer: req.user._id, sellers: [], }); const order = await newOrder.save(); }) );

Intenté usar un ciclo y luego order.sellers.push(order.orderItems[i].shop) y luego guardé nuevamente, pero no se actualiza en mi base de datos y en el almacenamiento local, el campo _id se insertó en la matriz en lugar de comprar

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Paso a paso:

  1. Declare un const orderItems separado por encima de const newOrder .
  2. Extrae const sellers usando un Set . También puede hacerlo con una matriz o incluso con un objeto, pero Set filtrará los duplicados automáticamente.
  3. Luego cree el orden, usando las 2 constantes anteriores, y recuerde convertir el Set en una matriz.

Debería verse algo como esto:

 const orderItems = req.body.orderItems.map((x) => ({ ...x, product: x._id })); const sellers = [...new Set(orderItems.map(x => x.shop))]; const newOrder = new Order({ orderItems, sellers: [...sellers], shippingAddress: req.body.shippingAddress, paymentMethod: req.body.paymentMethod, itemsPrice: req.body.itemsPrice, shippingPrice: req.body.shippingPrice, totalPrice: req.body.totalPrice, buyer: req.user._id, });

Y aquí hay un ejemplo de trabajo:

 const orderItems = [{ name: 'P1', quantity: 1, shop: 'S1', image: '/images/p1.jpg', price: 50, _id: '62dbb03e90c4ca14ee3e06fa', }, { name: 'P2', quantity: 1, shop: 'S2', image: '/images/p2.jpg', price: 50, _id: '62dbb03e90c4ca14ee3e06fb', }, { name: 'P3', quantity: 1, shop: 'S1', image: '/images/p3.jpg', price: 50, _id: '62dbb03e90c4ca14ee3e06fc', }]; const sellersSet = new Set(orderItems.map(x => x.shop)); const sellersArray = [...sellersSet]; // See here why the conversion to array is needed: console.log({ sellersSet, sellersArray });

about 4 years ago · Santiago Trujillo 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