JSFiddle - React, Tailwind, and code Playground
by evgkch
JavaScript
const getPrice = (pricesArray) => (key) => {
let pricesMap = new Map(pricesArray)
let keys = Array.from(pricesMap.keys())
return (pricesMap.has(key))
? pricesMap.get(key)
: pricesMap.get(getKeyIndex(keys)(key));
}
const getKeyIndex = (keys) => (key) => {
let keyPos = [...keys, key]
.sort((a, b) => a - b)
.findIndex(i => i === key)
return keys[keyPos - 1];
}
const getPossibleQty = (qty, moq) =>
moq * Math.ceil(qty / moq)
const setLocalStore = (getPossibleQty, getPrice) => (qty) => (el) =>
({
id: el.id,
dstr: el.dstr,
moq: el.moq,
curr: el.curr,
qty: getPossibleQty(qty, el.moq),
price: getPrice(el.prices)(getPossibleQty(qty, el.moq)),
sum: Math.round(getPrice(el.prices)(getPossibleQty(qty, el.moq)) * getPossibleQty(qty, el.moq) * 100) / 100,
})
const sortDistributors = (getLocalStore) => (data) =>
data.map(getLocalStore).sort( (a, b) => a.sum - b.sum)