我正在为我的工作制作个人应用程序。我想列出我所做的每件事的贫民窟,所以我知道我一天的体重需要什么。
所以可以说我可以做3种不同的事情
food 1 = sugar: 2, eggs: 4, cheese: 3
food 2 = sugar: 5, eggs: 4, brownSugar: 3
food 3 = flour: 2, eggs: 4, cheese: 3
所以让我们说今天必须制造2批食物1、3批食物2和1批食物3。
它将输出
Sugar: 19
Eggs: 24
Cheese: 9
brownSugar: 9
Flour: 2
如果有人能为我指出正确的方向,那将是很棒的..我正在考虑将每种食物设置为数组,并尝试按名称将其添加到每种成分值中。
答案 0 :(得分:0)
喜欢的种类:
var foodArray: [Foods] = []
// append all your foods in it when needed
func calculateAmount(foodChoices : [Foods]) -> (Sugar:Int, Eggs: Int, Cheese: Int) {
var cheese = 0
var sugar = 0
var eggs = 0
for g in foodChoices {
if g.name == foodArray.name {
cheese =+ g.cheese
sugar =+ g.sugar
eggs =+ g.eggs
}
}
return (Sugar, Eggs, Cheese)
}
您需要为食物创建一个结构,然后才能使用它。可能有更好的方法,但这是我能想到的最快的方法
答案 1 :(得分:0)
由于您的食物基本上是成对的(成分:计数),因此理想情况下将由Dictionary表示,其中关键是您的食材(现在使用String
,以后可以使用任何Hashable
):
let food1 = ["sugar": 2, "eggs": 4, "cheese": 3]
let food2 = ["sugar": 5, "eggs": 4, "brownSugar": 3]
let food3 = ["flour": 2, "eggs": 4, "cheese": 3]
这使我们可以使用Dictionary.merging(_, uniquingKeysWith:)
food1.merging(food2, uniquingKeysWith: +)
/// ["sugar": 7, "brownSugar": 3, "cheese": 3, "eggs": 8]
在这里,我们将food1
与food2
合并,并通过对计数求和来合并相同成分的数量。
要合并食物清单,我们可以使用reduce(into:, _)
[food1, food2, food3]
.reduce(into: [:]) { sum, food in
sum.merge(food, uniquingKeysWith: +)
}
/// ["sugar": 7, "brownSugar": 3, "cheese": 6, "flour": 2, "eggs": 12]
在这里,我们从空值([:]
)开始并合并所有食物。
答案 2 :(得分:0)
function orderFood(food1count,food2count,food3count){
var sugarCount = food1count*2+food2count*5;
var eggCount = (food1count+food2count+food3count)*4;
var flourCount = food3count*2;
var cheeseCount = (food1count+food2count)*3;
var brownSugarCount = food2count*3;
console.log('sugar :'+sugarCount);
console.log('egg :'+eggCount);
console.log('flour :'+flourCount);
console.log('cheese :'+cheeseCount);
}
orderFood(2,3,1);