2017-08-09 6 views
1

私は配列を持っており、配列内の特定の整数の合計を取ることができます。常に最初の2、最初の3、または最初の4要素になるので、最初の整数と最後の整数を取ることはありません。配列の一部ではなく、すべての整数を取る方法

私はこのコードを試してみましたが、それは、アレイ内のすべての整数を合計する前にそれを停止する方法を見つけることができません。

let x = array.reduce(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 
+0

が、これは素晴らしい仕事をありがとう! – StefWG

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 
0

与えられたインデックス間Intの配列の要素を合計する関数は(包括的、インデックス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 
関連する問題