Объединить Enum.filter с Enum.each - PullRequest
0 голосов
/ 29 мая 2018

Со следующим списком карт:

[%{test: %{"one" => 1, "three" => 3, "two" => 2}}, ...]

Разве этот код вообще ничего не фильтрует?

Enum.filter([map], fn(number) ->    
  Enum.each(number.test, fn {k, v} -> 
    v == 4                             
  end)                               
end)

Как заставить Enum.filter работать со свойством, котороесама карта?

1 Ответ

0 голосов
/ 29 мая 2018

Enum.each возвращает :ok, поэтому ваш код всегда будет возвращать то же значение, что и для ввода.

Если вы хотите проверить, что любое значение на карте имеет значение 4, выможно использовать Enum.any?/2:

Enum.any?(number.test, fn {k, v} -> 
  v == 4                             
end)

Чтобы проверить, имеют ли все из них значение 4, вы можете использовать Enum.all?/2:

Enum.all?(number.test, fn {k, v} -> 
  v == 4                             
end)  
...