scrimba
Practical math
Shopping Cart (Bonus Challenge) - Weights
Go Pro!Bootcamp

Bootcamp

Study group

Collaborate with peers in your dedicated #study-group channel.

Code reviews

Submit projects for review using the /review command in your #code-reviews channel

Shopping Cart (Bonus Challenge) - Weights
AboutCommentsNotes
Shopping Cart (Bonus Challenge) - Weights
Expand for more info
index.js
run
preview
console
function roll(min, max, floatFlag) {
let r = Math.random() * (max - min) + min
return floatFlag ? r : Math.floor(r)
}

let possibleProducts = ["πŸ‡", "🍈", "πŸ‰", "🍊", "πŸ‹", "🍌", "🍍", "πŸ₯­", "🍎", "🍏", "🍐", "πŸ‘", "πŸ’", "πŸ“", "πŸ₯", "πŸ…", "πŸ₯₯", "πŸ₯‘", "πŸ†", "πŸ₯”", "πŸ₯•", "🌽", "🌢", "πŸ₯’", "πŸ₯¬", "πŸ₯¦"]

let products = [...Array(5)].map((_, i) => {
return {
index: i,
title: possibleProducts[roll(0, possibleProducts.length)],
price: roll(2, 10, 1).toFixed(2),
count: roll(1, 6)
}
})

let cartTotal = products.reduce(function(accumulator, product) {
return accumulator + parseFloat(product.price) * product.count
}, 0).toFixed(2)

let taxRate = roll(5, 9, 1).toFixed(1)

function taxed(value) {
return taxRate / 100 * cartTotal + parseFloat(cartTotal)
}

let taxedTotal = taxed(cartTotal).toFixed(2)


let totalWeight = 0


let cart = document.getElementById("Products")
let cartHtml = ''
products.forEach(product => {
cartHtml += `<div class="product">
<div>${product.title}</div>
<div>πŸ’²${product.price}</div>
<div>x${product.count}</div>
</div>`
})
cart.innerHTML = cartHtml

let summary = document.getElementById("Summary")
let summaryHtml = ''
summaryHtml += `<div>Total: πŸ’²${cartTotal}</div>`
summaryHtml += `<div>Tax Rate: ${taxRate}%</div>`
summaryHtml += `<div>Taxed Total: πŸ’²${taxedTotal}</div>`
summaryHtml += `<div>Total Weight: ${totalWeight}oz</div>`
summary.innerHTML = summaryHtml
Console
/index.html
-1:33