Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何对数组的值执行求和操作,直到它达到Swift中的某个数字?_Arrays_Swift - Fatal编程技术网

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这样的数字?