Arrays swift 3过滤倍数“;不等于;条件

Arrays swift 3过滤倍数“;不等于;条件,arrays,swift3,Arrays,Swift3,在Swift 3中,我正在筛选并创建一个数组(在遍历现有数组时): 我只想从新数组中排除那些同时满足这两个条件的现有对象。这意味着,如果一个对象的lat和我的一样,其lng也和我的一样,那么我不希望它出现在我的新阵列中。但是,如果其中一个匹配,则没有问题,可能会包括在内。我使用&&运算符同时给出两个条件,但是即使只有一个条件为真,它也与我的条件匹配,因此不包括在我的新数组中,这不是我想要的。我试着用括号将它们组合在一起,但得到了相同的结果 这只是一个布尔逻辑问题。如果纬度是唯一的或经度是唯一的,

在Swift 3中,我正在筛选并创建一个数组(在遍历现有数组时):


我只想从新数组中排除那些同时满足这两个条件的现有对象。这意味着,如果一个对象的lat和我的一样,其lng也和我的一样,那么我不希望它出现在我的新阵列中。但是,如果其中一个匹配,则没有问题,可能会包括在内。我使用&&运算符同时给出两个条件,但是即使只有一个条件为真,它也与我的条件匹配,因此不包括在我的新数组中,这不是我想要的。我试着用括号将它们组合在一起,但得到了相同的结果

这只是一个布尔逻辑问题。如果纬度是唯一的或经度是唯一的,则希望地址位于输出数组中,因此需要一个
运算符,其中当前有

self.uniqueAddresses = self.uniqueAddresses.filter { $0.lat != thisUniqueAddress.lat || $0.lng != thisUniqueAddress.lng }
以下是在您的游乐场中尝试的测试代码:

let thisUniqueAddress = (lat: 0, lng: 0)
var uniqueAddresses:[(lat:Int,lng:Int)] = [(lat: 0, lng: 0),
                                 (lat: 0, lng: 1),
                                 (lat: 1, lng: 0),
                                 (lat: 1, lng: 1)]
uniqueAddresses = uniqueAddresses.filter {$0.lat != thisUniqueAddress.lat || $0.lng != thisUniqueAddress.lng}
print(uniqueAddresses)

它输出
[(0,1),(1,0),(1,1)]
,省略了
.lat
.lng
上匹配的一点
(0,0)
,实际上,我没有正确地表达自己。新数组不应包含与我的lat和lng匹配的对象。这就是我为什么写“!=lat”和“!=ing”的原因,因为如果它们与我现有的相同,我就不想要它们。现在发生的事情是,即使其中一个是相同的,它也没有被包括在内,因为它认为matchI编辑了我的问题,使它更清晰一些。@RobertI在回答中给出了正确的逻辑,意思是“如果一个对象的lat与我的相似,但其LAG与我的不同”(或反之亦然),我确实希望将其包含在新数组中编辑:“如果一个对象的lat与我相似,其lng也与我相似,那么我不希望它包含在我的新数组中。”“如果一个对象的lat与我的相似,其lng也与我的相似,那么我不希望它出现在我的新阵列中。“新编辑反映了这一变化。Robert的答案现在似乎很有效,因为如果有任何不匹配的地方,我希望将其包含在新数组中。所以现在我得到了我想要的结果。一部分不匹配:包括在内。两部分不匹配:包括在内。两个部分都匹配:不包括在内。不知道为什么,但逻辑与我的大脑处理它的方式有所不同。。。。。不过谢谢你。这正是我要找的,而且works@ChaimFriedman我知道!我觉得你的样子很对。我必须拿出所有的速记,写一个单独的过滤函数,看看它没有做我认为它做的事情。
let thisUniqueAddress = (lat: 0, lng: 0)
var uniqueAddresses:[(lat:Int,lng:Int)] = [(lat: 0, lng: 0),
                                 (lat: 0, lng: 1),
                                 (lat: 1, lng: 0),
                                 (lat: 1, lng: 1)]
uniqueAddresses = uniqueAddresses.filter {$0.lat != thisUniqueAddress.lat || $0.lng != thisUniqueAddress.lng}
print(uniqueAddresses)