Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
配列.prefix() / suffix() / dropFirst() / dropLast()
Swiftの配列では『prefix()』『suffix()』で先頭・末尾の要素を取得し、『dropFirst()』『dropLast()』で除いた残りを取得できます。『+』演算子や『joined()』で配列を結合することもできます。
構文
// 先頭n要素を取得
配列.prefix(n)
配列.prefix(while: { 条件 })
// 末尾n要素を取得
配列.suffix(n)
// 先頭n要素を除いた残り
配列.dropFirst(n)
配列.dropFirst(while: { 条件 })
// 末尾n要素を除いた残り
配列.dropLast(n)
// 配列の結合
配列1 + 配列2
配列.joined() // [[Int]]を[Int]にフラット化
配列.joined(separator: 区切り配列)
メソッド一覧
| メソッド | 概要 |
|---|---|
| 配列.prefix(n) | 先頭n要素のArraySliceを返します。 |
| 配列.prefix(while:) | 条件を満たす先頭要素を返します(条件が偽になった時点で停止)。 |
| 配列.suffix(n) | 末尾n要素のArraySliceを返します。 |
| 配列.dropFirst() | 先頭1要素を除いた残りのArraySliceを返します。 |
| 配列.dropFirst(n) | 先頭n要素を除いた残りのArraySliceを返します。 |
| 配列.dropLast(n) | 末尾n要素を除いた残りのArraySliceを返します。 |
| 配列.dropLast(while:) | 末尾から条件を満たす要素を除いた残りを返します。 |
| 配列1 + 配列2 | 2つの配列を結合した新しい配列を返します。 |
| 配列.joined() | 配列の配列([[T]])を平坦化して[T]にします。 |
サンプルコード
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// prefix: 先頭n要素
let first3 = Array(numbers.prefix(3))
print(first3) // [1, 2, 3]
// prefix(while:): 条件を満たす先頭要素
let lessThan5 = Array(numbers.prefix(while: { $0 < 5 }))
print(lessThan5) // [1, 2, 3, 4]
// suffix: 末尾n要素
let last3 = Array(numbers.suffix(3))
print(last3) // [8, 9, 10]
// dropFirst: 先頭n要素を除く
let withoutFirst = Array(numbers.dropFirst(3))
print(withoutFirst) // [4, 5, 6, 7, 8, 9, 10]
// dropLast: 末尾n要素を除く
let withoutLast = Array(numbers.dropLast(3))
print(withoutLast) // [1, 2, 3, 4, 5, 6, 7]
// 配列の結合
let a = [1, 2, 3]
let b = [4, 5, 6]
let combined = a + b
print(combined) // [1, 2, 3, 4, 5, 6]
var c = [7, 8]
c += [9, 10]
print(c) // [7, 8, 9, 10]
// joined: ネストした配列を平坦化
let nested = [[1, 2], [3, 4], [5, 6]]
let flat = Array(nested.joined())
print(flat) // [1, 2, 3, 4, 5, 6]
// 文字列配列でjoined
let words = [["Hello", "World"], ["Swift", "is", "great"]]
let sentence = words.joined(separator: ["|"]).joined(separator: " ")
print(sentence) // Hello World | Swift is great
概要
『prefix()』『suffix()』『dropFirst()』『dropLast()』が返すのは『ArraySlice』型(元の配列のビュー)です。独立した配列として使いたい場合は『Array(...)』でコピーしてください。
ページネーションの実装では『prefix』と『dropFirst』の組み合わせが便利です。元の配列の範囲を超えた場合(例:10要素の配列に『prefix(20)』)は、利用可能な要素のみ返してクラッシュしません。
配列の追加・削除については配列.append() / insert() / remove()を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。