Swift比较2类型[int]的数组没有保证顺序

时间:2017-08-29 15:23:49

标签: arrays swift

我制作应用程序以执行测试。为了检查有效答案,我有一组正确答案,类型为[Int]。例如,它可以是[1,5,10]。

此外,我还有一些用户输入的问题ID,也是[Int]类型。

现在我必须以某种方式比较那些数组。但是,[1,5,10]应该等于[10,1,5]和[5,1,10]等,因为订单不能得到保证。如何实现?

2 个答案:

答案 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])