2016-06-23 5 views

答えて

19

を削除

var numbers = [1, 2, 3, 4] 

、あなたが

let indexesToRemove: Set = [1, 3] 

を削除するインデックスのSetあなたが値を削除したいです「2」および「4」。

だけ

numbers = numbers 
    .enumerated() 
    .filter { !indexesToRemove.contains($0.offset) } 
    .map { $0.element } 

結果

print(numbers) // [1, 3] 
+1

Swift 3で同じ例を使用する方法を知っている可能性はありますか? – Raffi

+1

@ラッフィー:はい私の答えにスウィフト3のコードを追加しました –

+0

おかげで私はそれを自分のやり方にしようとしていましたが、うまくいかなかったと思います。 – Raffi

9

簡単です。最後から項目を削除します。

まず3を削除し、その後、あなたの配列を指定して、1

+0

は私がのUITableViewから複数の項目を削除するときに、データソースを変更するとき、それは境界 – Raffi

+4

@Raffi外のインデックスを投げていることを行うことができません(配列)、あなたは 'reloadData'をテーブルにもしますか?テーブルは行数が今異なっていることを知る必要があります。 – MirekE

+0

はい、私はその仲間を知っています。どうもありがとう@MirekE – Raffi

0

スウィフト3書き込み:同じ操作を実行する使用迅速な閉鎖を。

あなたの配列は

var numbers = [0, 1, 2, 3, 4, 5] 

、あなたが

let indexesToBeRemoved: Set = [2, 4] 

numbers = numbers 
    .enumerated() 
    .filter { !indexesToRemove.contains($0.offset) } 
    .map { $0.element } 
and result 

プリント(数字)を削除したいのインデックス// [0、1、3、5]

のようなものである場合

スイフト3: JSONオブジェクト(辞書)

var arrayString = [ 
    [ "char" : "Z" ], 
    [ "char" : "Y" ], 
    [ "char" : "X" ], 
    [ "char" : "W" ], 
    [ "char" : "V" ], 
    [ "char" : "U" ], 
    [ "char" : "T" ], 
    [ "char" : "S" ] 
] 

let arrayIndex = [2, 3, 5] 

arrayString = arrayString.enumerated() 
    .filter { !arrayIndex.contains($0.0 + 1) } 
    .map { $0.1 } 

print(arrayString) 

[[ "CHAR": "Z"]、[ "CHAR": "W"]、[ "CHAR": "U"]、[ "名前": 「T」]、[「名前」: 「S」]]

関連する問題