我有一个数组,我希望能够获取数组中某些整数的总和。它将始终是前2个,前3个或前4个元素,因此它不会采用第一个和最后一个整数,如果这样可以更容易。
我尝试了这段代码,但是在它汇总数组中的所有整数之前找不到停止它的方法:
let x = array.reduce(0, +)
答案 0 :(得分:3)
您可以使用prefix
方法。
let nums = [1, 2, 3, 4, 5]
let sum = nums.prefix(3).reduce(0, +)
print(sum) // 6
如果传递前缀大于
nums.count
的值,前缀将自动返回整个数组。
nums.prefix(10).reduce(0, +) // 15
答案 1 :(得分:1)
尝试切片数组:
// array[lowerBound..<upperBound] ignore upperBound
// array[lowerBound...upperBound] include upperBound
// Examples:
// Change 2 for the starting index you want to include
array[2..<array.count].reduce(0,+)
array[0..<array.count-2].reduce(0,+)
// Be careful with upper/lower bounds
答案 2 :(得分:0)
这是一个函数,它总结了给定索引之间Int
s数组的元素(包括,索引从0开始):
let numbers = [1,2,3,4,5,6,7,8,9,10]
func sumUpRange(numbers:[Int], from:Int, to:Int)->Int{
return numbers.enumerated().filter({ index, num in index >= from && index <= to}).map{$0.1}.reduce(0,+)
}
sumUpRange(numbers: numbers, from: 1, to: 3) //output is 2+3+4=9