JSFiddle - React, Tailwind, and code Playground
by amindunited
JavaScript
const dealFuntions = {
// ads, number of items, new price per unit
volumePrice: (filtered, numItems, pricePerUnit) => {
const arrLen = filtered.length;
// the last item in the array that we will apply the deal to
const lastIndex = ( Math.floor(arrLen / numItems) ) * numItems;
const dealObject = {
price: pricePerUnit,
msg: 'Discount Applied',
};
const result = filtered.map((item, index) => {
if (index < lastIndex) {
return Object.assign({}, item, dealObject);
}
return item;
});
console.log('volumePrice ', result);
return result;
}
}
const processDeals = (cart, deals) => {
const results = cart.slice();
console.log('processing, ', cart, deals);
const dealResults = deals.map((deal) => {
const filtered = cart.filter((item) => {
return (item.id === deal.id);
});
console.log('filtered', filtered);
let dealF = dealFuntions[deal.dealType](filtered, deal.volume, deal.pricePerUnit);
console.log('dealF', dealF);
return dealF;
});
results.map((item) => {
dealResults.filter((deal) => {
if (deal.uid === item.uid ) { return deal }
return false
});
return dealResults.length ? dealResults[1] : item;
});
return results;
}
const cartSort = (cart) => {
const orgCart = cart.slice();
let sorted = orgCart.sort((prev, curr) => {
return adIds.indexOf(prev.id) - adIds.indexOf(curr.id);
});
return sorted;
}
let items = [
{id:1, price:1},
{id:2, price:1},
{id:3, price:1},
{id:4, price:1},
{id:5, price:1},
{id:6, price:1} ,
{id:7, price:1}
];
let numItems = 4;
volumePrice(items, numItems, "230");