Arrays 如何对数组的值执行求和操作,直到它达到Swift中的某个数字?
所以我有以下几点Arrays 如何对数组的值执行求和操作,直到它达到Swift中的某个数字?,arrays,swift,Arrays,Swift,所以我有以下几点 class Passenger { let passengerId: Int, firstName: String, lastName: String, daysOnTrip: Int init(passengerId: Int, firstName: String, lastName: String, daysOnTrip: Int) { self.passengerId = passengerId self.firstNa
class Passenger {
let passengerId: Int, firstName: String, lastName: String, daysOnTrip: Int
init(passengerId: Int, firstName: String, lastName: String, daysOnTrip: Int) {
self.passengerId = passengerId
self.firstName = firstName
self.lastName = lastName
self.daysOnTrip = daysOnTrip
}
}
let peopleTravelling = [
Passenger(passengerId:1, firstName:"John", lastName:"Doe", daysOnTrip: 10),
Passenger(passengerId:2, firstName:"Seb", lastName:"Johns", daysOnTrip: 5),
Passenger(passengerId:3, firstName:"Emilia", lastName:"Clarke", daysOnTrip: 7)
]
singleDayCosts:[Double] = [3.3333333333333335, 3.3333333333333335, 3.3333333333333335, 3.3333333333333335, 3.3333333333333335, 5.0, 5.0, 10.0, 10.0, 10.0]
let mappedDays = peopleTravelling.map{$0.daysOnTrip}
var tripCostsPerson: [Double] = []
我试图用SingleDayCosts中第一个“X”个值的总和填充数组tripCostsPerson:[Double]=[]
,其中“X”是=到PeopleTraveling
中的daysOnTrip
的数量
e、 g。
对于乘客1,应为单日成本:[Double]
对于乘客2,应为单日成本:[Double]
对于乘客3,应为单日成本:[Double]
我用这个密码试过了
for daysSpend in peopleTravelling {
tripCostsPerson.append(singleDayCosts.reduce(0, +))
}
但对于所有3名乘客,我得到了所有10个数字的总和-[56.66666667,56.66666667,56.666666666 7]
如何根据
daysOnTrip
中的数字限制循环中的操作以停止从singleDayCosts
数组添加值。有什么想法吗?您可以使用前缀
方法
for person in peopleTravelling {
let sumOfCosts = singleDayCosts.prefix(person.daysOnTrip).reduce(0, +)
tripCostsPerson.append(sumOfCosts)
}
这里有一个更实用的方法
let tripCostsPerson = peopleTravelling.map { person in
singleDayCosts.prefix(person.daysOnTrip).reduce(0, +)
}
您可以使用
前缀
方法
for person in peopleTravelling {
let sumOfCosts = singleDayCosts.prefix(person.daysOnTrip).reduce(0, +)
tripCostsPerson.append(sumOfCosts)
}
这里有一个更实用的方法
let tripCostsPerson = peopleTravelling.map { person in
singleDayCosts.prefix(person.daysOnTrip).reduce(0, +)
}
太棒了,谢谢!我没有想到前缀方法有任何机会知道如何从中返回一个四舍五入到.00的数字,而不是返回像1.12312这样的数字?非常感谢!我没有想到前缀方法有任何机会知道如何从中返回一个四舍五入到.00的数字,而不是返回像1.12312这样的数字?