Swiftで配列から条件に一致した要素を削除する方法について記載します。
目次
条件に一致した要素を削除する方法
drop メソッド
クロージャーで条件を指定して要素を削除します。
dropFirst メソッド
配列の先頭から指定した数の要素を削除します。
dropLast メソッド
配列の末尾から指定した数の要素を削除します。
drop系メソッドの特徴は、削除元となる配列の要素は削除せず、指定した要素が削除された新たな配列を生成して戻り値にします。
削除元となる配列の要素を削除する場合は、remove系のメソッド を使用します。
1. 条件を指定して要素を削除( drop )
dropメソッドは引数で指定したクロージャーの条件に一致する要素を削除した、新たな配列を生成して返します。
削除元の配列( nums )は、dropメソッド実行後も要素が保持されていることが分かります。
1 2 3 4 5 6 7 |
let nums = [10, 20, 30, 40, 50] // 30より小さい値を含む要素を削除した配列を返す let result1 = nums.drop(while: {$0 < 30}) print( nums ) // [10, 20, 30, 40, 50] print( result1 ) // [30, 40, 50] |
2. 配列の先頭から指定した数の要素を削除( dropFirst )
dropFirst メソッドは、配列の先頭から引数で指定した数の要素を削除した、新たな配列を生成して返します。
なお、引数に配列の要素数より大きい値を指定した場合は、空の配列を返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
let nums = [10, 20, 30, 40, 50] // 配列の先頭から3つの要素を削除した配列を返す let result2 = nums.dropFirst(3) print( nums ) // [10, 20, 30, 40, 50] print( result2 ) // [40, 50] // 配列の要素数を超える値を指定した場合は、空の配列を返す let result3 = nums.dropFirst(10) print( nums ) // [10, 20, 30, 40, 50] print( result3 ) // [] |
3. 配列の末尾から指定した数の要素を削除( dropLast )
dropLast メソッドは、配列の末尾から引数で指定した数の要素を削除した、新たな配列を生成して返します。
こちらも、dropFirst同様に、引数に配列の要素数より大きい値を指定した場合は、空の配列を返します。
1 2 3 4 5 6 7 8 9 10 11 |
let nums = [10, 20, 30, 40, 50] // 配列の末尾から3つの要素を削除した配列を返す let result4 = nums.dropLast(3) print( nums ) // [10, 20, 30, 40, 50] print( result4 ) // [10, 20] // 配列の要素数を超える値を指定した場合は、空の配列が返る let result5 = nums.dropLast(10) print( nums ) // [10, 20, 30, 40, 50] print( result5 ) // [] |