69305


Swiftで配列から要素を削除したい場合、以下のようにremove(at)でindex番号を指定して削除できると思います。

[code]

    var testArray = [0,5,3,4,2,1,7]
    testArray.remove(at: 2)
    print(testArray)
    
[/code]

番号ではなく要素の中身で一致するものを見つけたら削除するということをしたい場合  
以下のような関数を作ればできたのですが、関数を作らずに実行する方法はあるのでしょうか？  
やはり、自前の関数を作ったほうが良いのでしょうか？

[code]

    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)
    
[/code]


CC BY-SA 4.0
2020-08-06T08:09:29.400
69303
2020-08-06T08:50:03.953
36446
question
swift
Swiftで配列の要素をindex番号を使用せずにremoveする方法


例えばですが、4を削除したい場合は

[code]

    let newArray = testArray.filter { $0 != 4 }
    
[/code]

としてみてはいかがでしょうか。

ただ、4が2つ以上ある場合、提示された関数版とは結果が異なってしまいますが。


CC BY-SA 4.0
2020-08-06T08:36:34.973
69304
2020-08-06T08:42:26.880
2020-08-06T08:42:26.880
8077
8077
69303
answer


初めにマッチした要素だけ消したいのであれば

[code]

    var testArray = [0, 5, 3, 4, 2, 1, 7]
    if let index = testArray.firstIndex(where: { $0 == 4 }) {
        testArray.remove(at: index)
    }
    print(testArray)
    
[/code]

すべての一致する要素を消すのであれば、[removeAll(where:)](https://developer.apple.com/documentation/swift/array/3017530-removeall)
を使えばできます。

[code]

    var testArray = [0, 5, 3, 4, 2, 1, 7]
    testArray.removeAll(where: { $0 == 4 })
    print(testArray)
    
[/code]

`removeFirst(where:)`のようなメソッドは用意されていませんので、最初にマッチした要素だけ消したいのであれば、インデックスは指定することになると思います。


CC BY-SA 4.0
2020-08-06T08:42:31.493
69305
2020-08-06T08:50:03.953
2020-08-06T08:50:03.953
9008
9008
69303
answer