[英]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.