Skip to content

Instantly share code, notes, and snippets.

@codebubb
Created January 15, 2020 13:29
Show Gist options
  • Select an option

  • Save codebubb/b0b4ccd11f20a4a839de90413365e5a5 to your computer and use it in GitHub Desktop.

Select an option

Save codebubb/b0b4ccd11f20a4a839de90413365e5a5 to your computer and use it in GitHub Desktop.
Array of Orders
const orders = [
{ orderId: '123', customerId: '123', deliveryDate: '01-01-2020', delivered: true, items: [
{ productId: '123', price: 55 },
{ productId: '234', price: 30 },
]},
{ orderId: '234', customerId: '234', deliveryDate: '01-02-2020', delivered: false, items: [
{ productId: '234', price: 30 },
]},
{ orderId: '345', customerId: '234', deliveryDate: '05-01-2020', delivered: true, items: [
{ productId: '567', price: 30 },
{ productId: '678', price: 80 },
]},
{ orderId: '456', customerId: '345', deliveryDate: '12-01-2020', delivered: true, items: [
{ productId: '789', price: 12 },
{ productId: '890', price: 90 },
]},
{ orderId: '578', customerId: '456', deliveryDate: '12-01-2020', delivered: true, items: [
{ productId: '901', price: 43 },
{ productId: '123', price: 55 },
]},
];
// Exercises
// 1) Get a list of the orders for the customer with the ID 234 that have not been delivered.
// 2) Create a new property on each order with the total price of items ordered.
// 3) Have all the orders been delivered?
// 4) Has the customer with ID '123' made any orders?
// 5) Have any products with an id of 123 been sold?
@hed911
Copy link
Copy Markdown

hed911 commented Nov 13, 2020

// Exercise 1
const list = orders.filter(e => !e.delivered && e.orderId == '234');

@hed911
Copy link
Copy Markdown

hed911 commented Nov 13, 2020

// Exercise 2

orders.forEach((o) => {
    o.total = 0;
    o.items.forEach((i) => {
        o.total += i.price;
    })
})

@hed911
Copy link
Copy Markdown

hed911 commented Nov 13, 2020

// Exercise 3
orders.every(e => e.delivered);

@hed911
Copy link
Copy Markdown

hed911 commented Nov 13, 2020

// Exercise 4
orders.some(e => e.orderId == '123');

@hed911
Copy link
Copy Markdown

hed911 commented Nov 13, 2020

// Exercise 5
orders.some(e => e.items.find(i => i.productId == '123'));

@MManzar786
Copy link
Copy Markdown

// Exercise 2

//
// 2) Create a new property on each order with the total price of items ordered.
orders.forEach((o) => {
o.totalPrice = o.items.reduce((a, i) => a + i.price, 0);
});
console.log(orders);

@dalmia01
Copy link
Copy Markdown

// Exercises

// 1) Get a list of the orders for the customer with the ID 234 that have not been delivered.
const cutomerID234DeliveredFalse = orders.filter((order) => order.customerId === "234" && !order.delivered);
console.log("Orders for the customer with the ID 234 that have not been delivered --> ", cutomerID234DeliveredFalse);

// 2) Create a new property on each order with the total price of items ordered.
const newPropertTotalItemsPrice = orders.map((order) => {
let totalPrice = order.items.reduce((acc, curr) => acc + curr.price, 0);
return { ...order, totalPrice };
});
console.log("Orders with new property Total price --> ", newPropertTotalItemsPrice);

// 3) Have all the orders been delivered?
const allDeliveredorNot = orders.every((order) => order.delivered);
console.log("Have all the orders been delivered --> ", allDeliveredorNot);

// 4) Has the customer with ID '123' made any orders?
const anyOrderCustomerID123 = orders.some((order) => order.customerId === "123");
console.log("Has the customer with ID '123' made any orders? --> ", anyOrderCustomerID123);

// 5) Have any products with an id of 123 been sold?
const anyProductID123 = orders.some((order) => order.items.filter((product) => product.productId === "123").length > 0);
console.log("Have any products with an id of 123 been sold? --> ", anyProductID123);

@abhidatta0
Copy link
Copy Markdown

// Exercise 5
orders.some(order => order.items.some(item => item.productId === '123'));

@salAhamad
Copy link
Copy Markdown

// 1) Get a list of the orders for the customer with the ID 234 that have not been delivered.

const notDeliveredWithID234 = orders.filter(item => item.customerId === '234' && !item.delivered)
// console.log(notDeliveredWithID234)

// 2) Create a new property on each order with the total price of items ordered.

const addTotalPrice = orders.map(item => { 
    let totalPrice = item.items.reduce((total, currentPrice) => total + currentPrice.price, 0);
    return {...item, totalPrice}
})
// console.table(addTotalPrice)

// 3) Have all the orders been delivered?

const allDelivered = orders.every(item => !item.delivered)
// console.log(allDelivered)

// 4) Has the customer with ID '123' made any orders?

const anyOrder = (orderId) => {
    return orderFound = orders.find(item => item.customerId === orderId && item.items.length > 0)
}
// console.table(anyOrder('123'))

// 5) Have any products with an id of 123 been sold?

const productSold = orders.some(order => order.items.some(item => item.productId === '123'))
// console.log(productSold)

@okoyecharles
Copy link
Copy Markdown

// 5) Have any products with an id of 123 been sold?

let func = (arr) => arr.some(line => line.items.some(product => product.productId === '123'))

@anshdeshwal
Copy link
Copy Markdown

const orders = [
{ orderId: '123', customerId: '123', deliveryDate: '01-01-2020', delivered: true, items: [
{ productId: '123', price: 55 },
{ productId: '234', price: 30 },
]},
{ orderId: '234', customerId: '234', deliveryDate: '01-02-2020', delivered: false, items: [
{ productId: '234', price: 30 },
]},
{ orderId: '345', customerId: '234', deliveryDate: '05-01-2020', delivered: true, items: [
{ productId: '567', price: 30 },
{ productId: '678', price: 80 },
]},
{ orderId: '456', customerId: '345', deliveryDate: '12-01-2020', delivered: true, items: [
{ productId: '789', price: 12 },
{ productId: '890', price: 90 },
]},
{ orderId: '578', customerId: '456', deliveryDate: '12-01-2020', delivered: true, items: [
{ productId: '901', price: 43 },
{ productId: '123', price: 55 },
]},
];

// Q1
const a = orders.filter((singleOrder)=>{
return singleOrder.customerId ==='234' && singleOrder.delivered === false;
})
console.log(a)
console.log("done")

// Q2
const b = orders.map((singleOrder)=>{
let totalPrice = 0;
singleOrder.items.map((singleProductdetails)=>{
totalPrice += singleProductdetails.price
})
singleOrder.productsTotalPrice = totalPrice;
return singleOrder.productsTotalPrice;
})
console.log(b)
console.log(orders)
console.log("done")

// Q3
// METHOD1
let delivered = true;
orders.forEach((singleOrder)=>{
if (singleOrder.delivered ===false){
delivered = false;
}
})
console.log("using forEach",delivered)

// METHOD2
let delivered2 = true;
for(let i of orders){
if(i.delivered===false){
delivered2 = false;
}
}
console.log(delivered2)

// METHOD3
let delivered3 = true;
orders.map((singleOrder)=>{
if (singleOrder.delivered ===false){
delivered3 = false;
}
})
console.log("using map",delivered3)
console.log("done")

// Q4
let exists123 = false;
for (i of orders){
if(i.customerId = '123'){
exists123 = true;
}
}
console.log(exists123)
console.log("done")

// Q5
let sold;
orders.forEach((singleOrder)=>{
if(singleOrder.delivered ===true){
singleOrder.items.forEach((singleProductdetails)=>{
if(singleProductdetails.productId ==='123'){
sold = true
}
})
}
})
console.log(sold?"yes atleast product of id 123 has been sold":"no product with 123 is sold")

@dusandjergovic
Copy link
Copy Markdown

dusandjergovic commented Apr 22, 2024

Exercises

// 1) Get a list of the orders for the customer with the ID 234 that have not been delivered.

orders.forEach(order => {
    if(order.customerId === '234' && order.delivered === false) {
        console.log(order);
    }
})

// 2) Create a new property on each order with the total price of items ordered.

orders[1].items.push({price: 0});
orders.forEach(order => {
    let orderOne = order.items[0].price;
    let orderTwo = order.items[1].price;
    let total = orderOne + orderTwo;
    order.items.push({total: `${total}`})
    console.log(order.items)
})

// 3) Have all the orders been delivered?

let count = 0;
let notDelivered = 0;
orders.forEach(order => {
    console.log(order)
    if(order.delivered === true) {
        count++;
    } else {
        notDelivered++;
    }
})
console.log(`Total number of orders that have been delivered is ${count}, and number of non delivered orders is ${notDelivered}`)

// 4) Has the customer with ID '123' made any orders?

orders.forEach(order => {
    if(order.customerId === '123' && order.items.length > 1) {
        console.log(`Customer with ID : "123", has made ${order.items.length} orders, so yes`);
    } else if(order.customerId === '123' && order.items.length < 1) {
        console.log(`Customer with ID : "123", has made ${order.items.length} orders, so no`)
    }
})

// 5) Have any products with an id of 123 been sold?

let count = 0;
orders.forEach(order => {
    order.items.forEach(item => {
        if(item.productId === '123' && order.delivered === true) {
            count++;
        }
    })
})
console.log(`Yes, there have been sold ${count} items`, true)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment