2017-08-29 4 views
-3

私はテストを行うためのアプリを作る。有効な答えを確認するために、私は[Int]型の正しい答えの配列を持っています。それは、例えば、[1,5,10]とすることができる。Swift compare 2配列の種類が[int]で保証されていない

また、私は、ユーザーが、また[INT]タイプを入力した質問IDの配列を持っています。

私は何とかその配列を比較する必要があります。しかし、[1,5,10]は[10,1,5]や[5,1,10]などと同じでなければなりません。順序が保証されていないからです。それを達成する方法?あなたは、アレイは、あなたの配列のすべての要素と要素のみが含まれている場合にtrueを返す関数を使用する場合は

+0

? –

+1

配列の重複する値を処理する必要がある場合は、https://stackoverflow.com/questions/40883818/check-if-elements-in-two-arrays-are-same-irrespective-of-indexが良いです重複する。 – rmaddy

答えて

1

、あなたは、Array拡張の下に使用することができます。 2つの配列の長さが同じでない場合、または配列の要素の1つが他の配列に存在しない場合、関数は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 
+0

重複があるとどうなりますか? –

+0

両方の配列に重複が存在する場合はtrueを返し、そうでない場合はfalseを返します。質問は重複の場合を特定していないので、私はそれを指定しなかった。 –

+0

重複質問:) –

-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]) 
+1

重複があるとどうなりますか? –

+0

OPのように同じサイズの2つのリストがある場合、重複がある場合、 'answers'は明らかに' correctAnswers'リストにない項目を持ちます。 –

関連する問題