swift2 如何从swift数组中删除多个项目?

3mpgtkmj  于 2022-11-06  发布在  Swift
关注(0)|答案(3)|浏览(156)

例如,我有一个数组

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

我想删除索引1处的项,然后在索引3处“让它在for循环中”。
但是删除索引1处的项会将索引3处的项移动到索引2,从而打乱第二次删除。
有什么建议吗?

9jyewag0

9jyewag01#

根据您的数组

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

和要删除的Set个索引

let indexesToRemove: Set = [1, 3]

您要删除值“2”和“4”。
就写

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

结果

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

hpcdzsge2#

很简单,从最后删除项目.
首先删除3,然后删除1

6tdlim6h

6tdlim6h3#

**Swift 3:**使用swift闭包执行相同的操作。

如果您的数组类似于

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]

**Swift 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)

[[“字符”:“Z”],[“字符”:“W”],[“字符”:“U”],[“名称”:“T”],[“名称”:“S”]]

相关问题