在保持顺序的同时计算联合(设置)数组

时间:2014-08-28 20:10:56

标签: arrays f#

我花了足够的时间试图解决这个问题而我却做不到。
我有这个数组:

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

我希望在不重复元素的情况下使这些数组联合起来

   let C=[|1;2;3;4;5;6;7;8|]

我认为使用Array.append A B,但我无法删除重复的元素。

2 个答案:

答案 0 :(得分:5)

通常,如果您想创建仅包含不同元素的集合,您可能应考虑使用Set代替。

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

let C = Set(A) + Set(B) 
// 1; 2; 3; 4; 5; 6; 7; 8 

或者,使用Seq.concatSeq.distinct基本上会做同样的事情,但返回seq

let C = [ A ; B ] 
        |> Seq.concat 
        |> Seq.distinct

现在使用其中任何一种解决方案,如果您想将其转回数组,只需使用Seq.toArray

答案 1 :(得分:0)

let A = [|1;2;3;4;5|]
let B = [|3;4;5;6;7;8|]
let C = Set.ofArray A + Set.ofArray B :> seq<_>