有人知道如何以简化形式编写以下代码吗?
if self.atPoint(locationUser) == blueMarkArray[0] || self.atPoint(locationUser) == blueMarkArray[1] || self.atPoint(locationUser) == blueMarkArray[2] || self.atPoint(locationUser) == blueMarkArray[3] || self.atPoint(locationUser) == blueMarkArray[4] || self.atPoint(locationUser) == blueMarkArray[5] || self.atPoint(locationUser) == blueMarkArray[6]{
print("its here")
}
此外,我不想提交blueMarkArray
数组中固定数量的元素。 应该尽可能地可变,因为例如它可以包含4个元素,但也可以包含12个元素。
对于每个答案我都很感谢。
编辑:
如果我要编写以下内容,如何访问找到的元素:someNode.position = elementOfMarkArray.position
答案 0 :(得分:3)
使用数组的contains
方法
if (blueMarkArray.contains(self.atPoint(locationUser))) {
//
}
或者,如果像示例一样只需要检查索引6
,请使用
if (blueMarkArray[0...6].contains(self.atPoint(locationUser))) {
//
}
如果要获取元素的索引,则可以使用firstIndex
个方法中的lastIndex
if let index = blueMarkArray.firstIndex(of: self.atPoint(locationUser)) {
//
}
答案 1 :(得分:1)
您应该简单地使用contains
的{{1}}方法,如果数组中的任何元素等于Array
,它将返回true。
self.atPoint(locationUser)
如果还需要访问与要查找的对象/值匹配的元素,则可以使用if blueMarkArray.contains(self.atPoint(locationUser)) {
print("it's here")
}
或first(where:)
。
firstIndex(of:)
或
if let location = blueMarkArray.first(where: {$0 == self.atPoint(locationUser)}) {
someNode.position = location.position
}
答案 2 :(得分:1)
您可以使用array's
方法contains
:
if blueMarkArray.contains(self.atPoint(locationUser)) {
print("its here")
}