这次我正在使用数组,我想添加元素。每当用户在数组中添加某个值时,我希望它与前一个值相加,并给出总价值。
struct KeyValues{
var category:String!
var amount:String!
}
var arrExpense = [KeyValues]()
在我的例子中,我正在向amount变量添加值。我想要所有用户加到金额值上的值的总和。我怎样才能在短时间内做到这一点呢?我需要用循环还是别的什么?
首先绝不将结构体成员声明为隐式可选解包装。如果它应该是可选的,声明为常规可选(?
)
其次,如果一个值不会改变(可能是category
),声明它为常数(let
)
可以用compactMap
和reduce
来求和
struct KeyValues {
let category : String
var amount : String
}
let sum = arrExpense.compactMap{Int($0.amount)}.reduce(0, +)
compactMap
用于过滤不能转换为Int
的字符串。考虑为amount
请参阅此文章
let numbers = [1,2,3,5]
numbers.append(6) // [1,2,3,5,6]
numbers.insert(4, at: 3) // [1,2,3,4,5,6]
numbers.remove(at: 1) // [1,3,4,5,6]
numbers.removeLast() // [1,3,4,5]
let total = numbers.reduce(0, +) // 0 = starting point, + = operation
// 0 + 1 + 3 + 4 + 5 = 13