-
-
Save codebubb/b0b4ccd11f20a4a839de90413365e5a5 to your computer and use it in GitHub Desktop.
| 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? | |
// Exercise 2
orders.forEach((o) => {
o.total = 0;
o.items.forEach((i) => {
o.total += i.price;
})
})
// Exercise 3
orders.every(e => e.delivered);
// Exercise 4
orders.some(e => e.orderId == '123');
// Exercise 5
orders.some(e => e.items.find(i => i.productId == '123'));
// 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);
// 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);
// Exercise 5
orders.some(order => order.items.some(item => item.productId === '123'));
// 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)
// 5) Have any products with an id of 123 been sold?
let func = (arr) => arr.some(line => line.items.some(product => product.productId === '123'))
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")
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)
// Exercise 1
const list = orders.filter(e => !e.delivered && e.orderId == '234');