Current section
Files
Jump to
Current section
Files
lib/core/list.ex
defmodule Gulib.List do
# list_a与list_b是否有交集
def mixed?(list_a, list_b) do
Enum.reduce(list_a, false, fn(i, mixed) ->
mixed || Enum.member?(list_b, i)
end)
end
def index_by(list, key) do
list |> Enum.map(fn(item) -> {Map.get(item, key), item} end) |> Map.new
end
def compact list do
list |> Enum.filter(fn(item) -> !!item end)
end
def find_index(list, ele) when is_list(list) do
Enum.find_index(list, fn(x) -> x == ele end) || -1
end
def max([]), do: nil
def max(list) do
Enum.max(list)
end
def min([]), do: nil
def min(list) do
Enum.min(list)
end
def sample([]), do: nil
def sample([item]), do: item
def sample(list) do
list |> sample(1) |> List.first
end
def sample(list, count) do
Enum.take_random(list, count)
end
def sort_by_values(records, values, field_key) do
Enum.sort(records, fn(a, b) ->
find_index(values, a |> Map.get(field_key)) < find_index(values, b |> Map.get(field_key))
end)
end
end