如何知道两个数组是否至少有一个相等的元素(f#)

时间:2014-08-28 23:33:33

标签: arrays f#

我有一个关于比较数组的问题。 我有两个数组:

   let A = [|1;2;3;4;5|]
   let B = [|2;7|]

我想现在,如果他们至少有一个相等的元素。如果他们返回True。 我尝试使用这样的函数:

   let exists = Array.exists2 (fun elem1 elem2 -> elem1 = elem2)
   exists A B

在这种情况下应该返回true。 但它有一个问题,因为它只在阵列长度相同时才有效。如何使用不同长度的函数?

3 个答案:

答案 0 :(得分:3)

可能更简单:

let exists a b = (Set.ofArray a, Set.ofArray b) ||> Set.intersect |> (<>) Set.empty

答案 1 :(得分:1)

let exists a b = Array.exists (Set.ofArray a).Contains b

答案 2 :(得分:0)

一种方法是计算两组的交集

let aset,bset = Set.ofArray A, set.ofArray B
Set.Intersect aset,bset |> Set.toSeq |> Seq.length |> function |0 -> false _ -> true