Skip to content

Instantly share code, notes, and snippets.

@npgenx
Created September 24, 2025 22:30
Show Gist options
  • Select an option

  • Save npgenx/c4feac261ea93d0ec6688e6c54fdd006 to your computer and use it in GitHub Desktop.

Select an option

Save npgenx/c4feac261ea93d0ec6688e6c54fdd006 to your computer and use it in GitHub Desktop.
Get Lowest priced product quote given lead time
const sampleData = [{"quoteID":660,"vendorID":33,"productID":3,"costPerUnit":3.29,"deliveryTime":4},
{"quoteID":874,"vendorID":296,"productID":1,"costPerUnit":49.99,"deliveryTime":2},
{"quoteID":272,"vendorID":405,"productID":4,"costPerUnit":3.99,"deliveryTime":10},
{"quoteID":282,"vendorID":281,"productID":1,"costPerUnit":64.99,"deliveryTime":8},
{"quoteID":395,"vendorID":445,"productID":2,"costPerUnit":29.99,"deliveryTime":7},
{"quoteID":400,"vendorID":255,"productID":4,"costPerUnit":2.99,"deliveryTime":10},
{"quoteID":802,"vendorID":240,"productID":1,"costPerUnit":2.99,"deliveryTime":11},
{"quoteID":526,"vendorID":183,"productID":3,"costPerUnit":14.99,"deliveryTime":8},
{"quoteID":423,"vendorID":345,"productID":2,"costPerUnit":4.99,"deliveryTime":12},
{"quoteID":444,"vendorID":97,"productID":2,"costPerUnit":15.99,"deliveryTime":1},
{"quoteID":823,"vendorID":96,"productID":4,"costPerUnit":3.39,"deliveryTime":4},
{"quoteID":481,"vendorID":190,"productID":2,"costPerUnit":34.99,"deliveryTime":12},
{"quoteID":713,"vendorID":191,"productID":1,"costPerUnit":49.99,"deliveryTime":5},
{"quoteID":408,"vendorID":297,"productID":2,"costPerUnit":99.99,"deliveryTime":9},
{"quoteID":377,"vendorID":437,"productID":1,"costPerUnit":18.99,"deliveryTime":10},
{"quoteID":949,"vendorID":459,"productID":1,"costPerUnit":17.99,"deliveryTime":3},
{"quoteID":828,"vendorID":499,"productID":3,"costPerUnit":1.99,"deliveryTime":6},
{"quoteID":815,"vendorID":59,"productID":2,"costPerUnit":1.99,"deliveryTime":2},
{"quoteID":573,"vendorID":213,"productID":1,"costPerUnit":5.99,"deliveryTime":7},
{"quoteID":287,"vendorID":61,"productID":3,"costPerUnit":5.99,"deliveryTime":7},
{"quoteID":359,"vendorID":344,"productID":4,"costPerUnit":1.99,"deliveryTime":1},
{"quoteID":989,"vendorID":243,"productID":1,"costPerUnit":3.99,"deliveryTime":3},
{"quoteID":556,"vendorID":215,"productID":3,"costPerUnit":5.99,"deliveryTime":11},
{"quoteID":663,"vendorID":145,"productID":2,"costPerUnit":29.99,"deliveryTime":5},
{"quoteID":542,"vendorID":65,"productID":1,"costPerUnit":19.99,"deliveryTime":4},
{"quoteID":795,"vendorID":352,"productID":4,"costPerUnit":3.49,"deliveryTime":2},
{"quoteID":414,"vendorID":475,"productID":3,"costPerUnit":2.49,"deliveryTime":8},
{"quoteID":274,"vendorID":146,"productID":2,"costPerUnit":1.99,"deliveryTime":9},
{"quoteID":880,"vendorID":331,"productID":3,"costPerUnit":4.29,"deliveryTime":10},
{"quoteID":136,"vendorID":346,"productID":1,"costPerUnit":3.49,"deliveryTime":4},
{"quoteID":869,"vendorID":334,"productID":2,"costPerUnit":2.99,"deliveryTime":4},
{"quoteID":452,"vendorID":489,"productID":1,"costPerUnit":25,"deliveryTime":2},
{"quoteID":738,"vendorID":221,"productID":1,"costPerUnit":24.99,"deliveryTime":12},
{"quoteID":730,"vendorID":165,"productID":1,"costPerUnit":3.29,"deliveryTime":5},
{"quoteID":184,"vendorID":408,"productID":3,"costPerUnit":3.99,"deliveryTime":9},
{"quoteID":751,"vendorID":465,"productID":1,"costPerUnit":1.99,"deliveryTime":7},
{"quoteID":776,"vendorID":41,"productID":3,"costPerUnit":29.99,"deliveryTime":9},
{"quoteID":384,"vendorID":224,"productID":4,"costPerUnit":59.99,"deliveryTime":5},
{"quoteID":420,"vendorID":186,"productID":1,"costPerUnit":3.19,"deliveryTime":5},
{"quoteID":372,"vendorID":58,"productID":4,"costPerUnit":1.49,"deliveryTime":1},
{"quoteID":197,"vendorID":153,"productID":3,"costPerUnit":59.99,"deliveryTime":3},
{"quoteID":351,"vendorID":30,"productID":2,"costPerUnit":29.99,"deliveryTime":5},
{"quoteID":285,"vendorID":346,"productID":4,"costPerUnit":2.29,"deliveryTime":11},
{"quoteID":564,"vendorID":278,"productID":2,"costPerUnit":2.89,"deliveryTime":13},
{"quoteID":358,"vendorID":62,"productID":4,"costPerUnit":29.99,"deliveryTime":9},
{"quoteID":966,"vendorID":191,"productID":3,"costPerUnit":1.29,"deliveryTime":2},
{"quoteID":644,"vendorID":37,"productID":3,"costPerUnit":49.99,"deliveryTime":4},
{"quoteID":941,"vendorID":80,"productID":1,"costPerUnit":2.49,"deliveryTime":7},
{"quoteID":413,"vendorID":243,"productID":4,"costPerUnit":2.99,"deliveryTime":5},
{"quoteID":601,"vendorID":314,"productID":4,"costPerUnit":3.49,"deliveryTime":2}]
//Write a function that returns the cheapest cost for a given product with a shipping time of under 5 days
const getOptimalProduct = (products, leadtime = 5) => {
const validQuotes = [];
const invalidQuotes = [];
const bestCostByProductId = {};
// Get Valid and Invalid Quotes
products.forEach(quote => {
if (quote.deliveryTime <= leadtime)
{ validQuotes.push(quote); }
else { invalidQuotes.push(quote); }
});
// Get unique product IDs
const uniqueProductIds = [...new Set(products.map(item => item.productID))];
// Get best quote by product ID
uniqueProductIds.map(id => {
const prodCosts = validQuotes.filter(quote => quote.productID === id);
const bestQuote = prodCosts.reduce((min, quote) => quote.costPerUnit < min.costPerUnit ? quote : min, prodCosts[0]);
bestCostByProductId[id] = bestQuote;
});
return {
bestCostByProductId,
leadtime,
invalidQuotes,
validQuotes
};
};
console.log(getOptimalProduct(sampleData, 5));
console.log(getOptimalProduct(sampleData,3))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment