如何从 swift 数组中删除多个项目?
How to remove multiple items from a swift array?
例如我有一个数组
var array = [1, 2, 3, 4]
我想删除索引 1 处的项目,然后删除索引 3 处的项目 "let it be in a for loop"。
但是删除索引 1 处的项目会将索引 3 处的项目移动到索引 2,从而搞乱第二次删除。
有什么建议吗?
很简单。从末尾删除项目。
先删3再删1
给定你的数组
var numbers = [1, 2, 3, 4]
和 Set
个要删除的索引
let indexesToRemove: Set = [1, 3]
You want to remove the values "2" and "4".
随便写
numbers = numbers
.enumerated()
.filter { !indexesToRemove.contains([=12=].offset) }
.map { [=12=].element }
结果
print(numbers) // [1, 3]
Swift 3:使用swift闭包执行相同的操作。
如果你的数组是这样的
var numbers = [0, 1, 2, 3, 4, 5]
以及您要删除的索引
let indexesToBeRemoved: Set = [2, 4]
numbers = numbers
.enumerated()
.filter { !indexesToRemove.contains([=11=].offset) }
.map { [=11=].element }
and result
print(numbers) // [0, 1, 3, 5]
Swift 3:
这是与 JSON Object (dictionary)
相同的操作
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([=12=].0 + 1) }
.map { [=12=].1 }
print(arrayString)
[["char": "Z"], ["char": "W"], ["char": "U"], ["name": "T"], ["name":
"S"]]
例如我有一个数组
var array = [1, 2, 3, 4]
我想删除索引 1 处的项目,然后删除索引 3 处的项目 "let it be in a for loop"。
但是删除索引 1 处的项目会将索引 3 处的项目移动到索引 2,从而搞乱第二次删除。
有什么建议吗?
很简单。从末尾删除项目。
先删3再删1
给定你的数组
var numbers = [1, 2, 3, 4]
和 Set
个要删除的索引
let indexesToRemove: Set = [1, 3]
You want to remove the values "2" and "4".
随便写
numbers = numbers
.enumerated()
.filter { !indexesToRemove.contains([=12=].offset) }
.map { [=12=].element }
结果
print(numbers) // [1, 3]
Swift 3:使用swift闭包执行相同的操作。
如果你的数组是这样的
var numbers = [0, 1, 2, 3, 4, 5]
以及您要删除的索引
let indexesToBeRemoved: Set = [2, 4]
numbers = numbers
.enumerated()
.filter { !indexesToRemove.contains([=11=].offset) }
.map { [=11=].element }
and result
print(numbers) // [0, 1, 3, 5]
Swift 3: 这是与 JSON Object (dictionary)
相同的操作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([=12=].0 + 1) }
.map { [=12=].1 }
print(arrayString)
[["char": "Z"], ["char": "W"], ["char": "U"], ["name": "T"], ["name": "S"]]