我按以下方式过滤我的数组:
randomArray = randomArray.filter({m in m.x < firstArray[0].x && ConditionX})
我有另一个数组secondArray
,其中包含randomArray
中的元素。
我想在过滤器中添加另一个条件(在上面的代码中表示ConditionX
),以从secondArray
中移除randomArray
中的所有位置
答案 0 :(得分:1)
尽管不能确切地理解你在这里尝试做什么,但在基本数组过滤方面还是如此。
let array1 = ["a", "b", "c"]
let array2 = ["c", "d", "e"]
var array3 = array1.filter() { return !array2.contains($0) }
应该返回:
["a", "b"]
答案 1 :(得分:0)
struct MyStruct {
var x: Int = 0
init(_ x: Int) {
self.x = x
}
}
var randomArray = [MyStruct(1), MyStruct(2), MyStruct(3)]
var firstArray = [MyStruct(10)]
var secondArray = [MyStruct(1), MyStruct(2)]
func exist(_ item: MyStruct, in array: [MyStruct]) -> Bool {
for i in array {
if item.x == i.x {
return true
}
}
return false
}
func shouldInclude(_ item: MyStruct, basedOn array: [MyStruct]) -> Bool {
return item.x < array[0].x
}
randomArray = randomArray.filter({ (item) -> Bool in
return shouldInclude(item, basedOn:firstArray) && !exist(item, in:secondArray)
})
print(randomArray) // output: [MyStruct(x: 3)]