スタック・オーバーフロー Asked on December 10, 2020
Swiftで配列から要素を削除したい場合、以下のようにremove(at)でindex番号を指定して削除できると思います。
var testArray = [0,5,3,4,2,1,7]
testArray.remove(at: 2)
print(testArray)
番号ではなく要素の中身で一致するものを見つけたら削除するということをしたい場合
以下のような関数を作ればできたのですが、関数を作らずに実行する方法はあるのでしょうか?
やはり、自前の関数を作ったほうが良いのでしょうか?
func removeElement(All_Array:[Int],SpecifyElement:Int) -> [Int]
{
var returnArray = All_Array
for (index, element) in All_Array.enumerated() {
if element == SpecifyElement
{
returnArray.remove(at: index)
}
}
return returnArray
}
var testArray = [0,5,3,4,2,1,7]
testArray = removeElement(All_Array: testArray,SpecifyElement: 4)
print(testArray)
初めにマッチした要素だけ消したいのであれば
var testArray = [0, 5, 3, 4, 2, 1, 7]
if let index = testArray.firstIndex(where: { $0 == 4 }) {
testArray.remove(at: index)
}
print(testArray)
すべての一致する要素を消すのであれば、removeAll(where:) を使えばできます。
var testArray = [0, 5, 3, 4, 2, 1, 7]
testArray.removeAll(where: { $0 == 4 })
print(testArray)
removeFirst(where:)
のようなメソッドは用意されていませんので、最初にマッチした要素だけ消したいのであれば、インデックスは指定することになると思います。
Correct answer by shingo.nakanishi on December 10, 2020
例えばですが、4を削除したい場合は
let newArray = testArray.filter { $0 != 4 }
としてみてはいかがでしょうか。
ただ、4が2つ以上ある場合、提示された関数版とは結果が異なってしまいますが。
Answered by Nao on December 10, 2020
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP