我制作应用程序以执行测试。为了检查有效答案,我有一组正确答案,类型为[Int]。例如,它可以是[1,5,10]。
此外,我还有一些用户输入的问题ID,也是[Int]类型。
现在我必须以某种方式比较那些数组。但是,[1,5,10]应该等于[10,1,5]和[5,1,10]等,因为订单不能得到保证。如何实现?
答案 0 :(得分:1)
如果你想要一个函数,如果一个数组包含你的数组的所有元素并且只包含那些元素,则返回true,你可以使用下面的Array Extension。如果两个数组的长度不相同,或者如果数组中的某个元素不存在于另一个数组中,则该函数返回false,否则返回true。
let array1 = [1,5,10]
let array2 = [5,10,1]
let array3 = [10,1,5]
let otherArray = [2,1,5,10]
let anotherArray = [2,3,5]
extension Array where Element == Int {
func isUnorderedEqual(to array: [Element])->Bool{
if self.count == array.count {
for element in self {
if array.index(of: element) == nil {
return false
}
}
return true
} else {
return false
}
}
}
print(array1.isUnorderedEqual(to: array2)) //true
print(array1.isUnorderedEqual(to: array3)) //true
print(array1.isUnorderedEqual(to: otherArray)) //false
print(array1.isUnorderedEqual(to: anotherArray)) //false
答案 1 :(得分:-1)
您可以过滤不在答案列表中的任何正确答案,并查看是否存在任何此类项目。
let correctAnswers: [Int] = [1, 5, 10]
func validate(answers: [Int]) -> Bool {
return answers.filter({ answer in !correctAnswers.contains(answer) }).isEmpty
}
validate(answers: [10, 1, 5])