У меня есть следующее требование: получить массив кортежей из первого массива согласно внешнему виду элементов во втором массиве:
let totals = [| ("old1", "new1"); ("old2", "new2"); ("old3", "new3"); ("old4", "new4") |]
let changes = [| "new1"; "new4" |]
Я хочу иметь это:
let updates = [| ("old1", "new1"); ("old4", "new4") |]
Если итоговые значения и изменения обоих массивов имеют одинаковую длину, то я думаю, что это легко:
let updates = Array.zip changes totals
|> Array.choose(fun (a, B) -> if a = fst(B) then Some (B) else None)
К сожалению, итоги и изменения имеют разное количество элементов; поэтому я не могу найти простой способ получить нужные мне элементы.