Swift: 快速从数组中删除元素,就像在 Lua 中一样

我有一个包含相当多元素的数组。我想按值而不是按键来删除一个元素。看起来你必须这样做:

array = array.filter() { $0 !== value }

对我来说,从 Lua 背景下来看,这似乎与这段 Lua 代码相当等价:

for k,v in pairs(array) do
    if v == value then table.remove(array, k) end
end

这是一种慢的方法,在 Lua 中更快的方法是将键设置为值:

array = {[value] = "something"}
array[value] = nil

Swift 中是否有任何等价的方法?在我看来,过滤器会检查每个元素,所以我觉得必须有一种更快的方法。如果使用字典,它是否更好?

点赞
用户5576310
用户5576310

我认为对于你来说,filter 是最好的方法。你也可以通过索引值来移除数组中的元素,但我仍然推荐使用 filter 方法:

过滤:

array = array.filter() { $0 !== value }

通过索引值移除:

if let index = array.index(where: { $0 == value }) {
    array.remove(at: index)
}
2017-06-20 05:38:15