簡體   English   中英

通過比較兩個 arrays 得到總和

[英]Getting sum by comparing two arrays

我有 2 個 arrays,一個包含產品列表,另一個是包含多個購買訂單信息的訂單 arrays。

例如, products 數組如下所示:

const products = [
    {price: 10, id: 123, ...}
     ,
    ...
 ]

訂單數組看起來像:

const orders = [
   
   {
     shippinginfo: {...},
     orderinfo: {
        note: 'a message for the seller',
        paymentType: 'visa',
        products: [
          {
           id: 123,
           qty: 5
          }
         ]
      }
   }

 ]

所以我的問題是,我究竟如何才能對這個訂單數組中所有訂單的價格求和?

我們可以這樣做:

 const products = [{ price: 10, id: 123 }] const orders = [{ shippinginfo: "", orderinfo: { note: 'a message for the seller', paymentType: 'visa', products: [{ id: 123, qty: 5 }] } }]; let obj = {}; products.forEach((product) => { obj[product.id] = product; }); orders.forEach((order) => { order.orderinfo.products.forEach((product) => { product.price = obj[product.id].price * product.qty; }); }); console.log(orders);

循環播放作品。 為了使它更有用,添加了一些隨機產品...它將為您提供訂單數組中所有產品的總和

  const orders = [{
    orderinfo: {
      note: 'a message for the seller',
      paymentType: 'visa',
      products: [{
        id: 123,
        qty: 5
      },
  
        {
          id: 13,
          qty: 2
        }]
    }
  }]
  const products = [{
    price: 10,
    id: 123
  },
    {
      price: 100,
      id: 13
    },
  
  ]
  
  let sum = 0;
  
  orders.forEach(order => {
    order.orderinfo.products.forEach(item => {
      products.forEach(product => {
        if (item.id === product.id) {
          sum += product.price * item.qty
        }
      })
    })
  });
  
  console.log(sum)

你可以這樣做:

 const products = [ {price: 10, id: 123} ] const orders = [ { shippinginfo: "", orderinfo: { note: 'a message for the seller', paymentType: 'visa', products: [ { id: 123, qty: 5 } ] } } ] var sum = 0 for (let i = 0;i<orders.length;i++){ var order = orders[i] var orderinfo = order["orderinfo"] var products1 = orderinfo["products"] for (let j = 0;j<products1.length;j++){ var product1 = products1[j] for (let k = 0;k<products.length;k++){ if (products[k]["id"] == product1["id"]){ sum += products[k]["price"]*product1["qty"] } } } } console.log(sum); // 50

const orders = [{
    orderinfo: {
        note: 'a message for the seller',
        paymentType: 'visa',
        products: [{
            id: 123,
            qty: 5
        },

        {
            id: 13,
            qty: 2
        }]
    }
}]
const products = [{
    price: 10,
    id: 123
},
{
    price: 100,
    id: 13
},

]
// finds price of order's product and  multiply by qty
let sumOfOrders = orders.orderinfo.products.reduce((acc, cur) => acc + (products.find(f => f.id === cur.id)).price * cur.qty)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM