如何在数组中获取一些但不是全部的总和

时间:2017-08-09 16:55:57

标签: arrays swift

我有一个数组,我希望能够获取数组中某些整数的总和。它将始终是前2个,前3个或前4个元素,因此它不会采用第一个和最后一个整数,如果这样可以更容易。

我尝试了这段代码,但是在它汇总数组中的所有整数之前找不到停止它的方法:

let x = array.reduce(0, +)

3 个答案:

答案 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