问题描述:
请写出一个函数,该函数包含两个参数,第一个参数为蛋糕配方,第二个是现有的原料,根据配方与原料计算出能做出蛋糕的个数。
示例:
// 示例1:
// 配方:
{flour: 500, sugar: 200, eggs: 1}
// 原料:
{flour: 1200, sugar: 1200, eggs: 5, milk: 200}
// 计算结果: 共可以做出2个蛋糕。
// 示例2:
// 配方:
{ milk: 100, flour: 4, sugar: 10, butter: 5 }
// 原料:
{ milk: 1288, flour: 9, sugar: 95 }
// 计算结果: 共可以做出0个蛋糕,因为我们没有黄油(butter)。
// 示例3:
// 配方:
{ milk: 100, butter: 50, cheese: 10 }
// 原料:
{ milk: 198, butter: 52, cheese: 10 }
// 计算结果: 共可以做出1个蛋糕。
参考答案:
1. 我们要参考的是原料(recipe)中的元素
2. 我们能做多少蛋糕取决于最稀缺的元素(短板效应)
3. 如果我们缺少某样原料,那么一个蛋糕也做不了
let batches = (recipe,available) =>
Math.floor(
Math.min(...Object.keys(recipe).map(k=>available[k]/recipe[k]||0))
)
知识点:
// 1.math方法,取整与取最小值
Math.floor();
Math.min();
// 2. 扩展运算符 “...” 该方法可以与Math联用,计算数组中的最小值
Math.min([1,2,3,4,5]) //这样不可以哦
Math.min(...[1,2,3,4,5]) //输出1
// 3.数组遍历 arr.map(),该方法会返回一个与原数组长度相同的新数组
arr.map( k => {})