Hi OGs,
Any ideas how to find the best way to find which index in Enum.any?
has satisfied its condition ?
I have to iterate through a list and delete everything except one, I got fed with multiple lists and based on conditions, I would spare the last one in each list differently
The reason why I can’t iterate through a list and find the one I want to delete is due to the complexity of conditions, I need to know who they are, every single one of them in my list. For example, [%A{}, %B{}]
I could just delete A as required, but [%A{} ,%B{} , %C{} , %D{}]
I need to know C has what, D has what in order to delete A or else I have to delete C or D. That’s why I need to know which indexes are A, C, D through Enum.any?
Thank you
you’re looking for: Enum.find_index/2
1 Like
Enum.any?/2
returns truth if the function returns true for any of the elements. You could use Enum.find_index/2
in similar fashion, but i see that you need 3 indexes instead of 1.
Could you use something like this?
Enum.with_index(enumerable)
|> Enum.map(fn {value, index} ->
{filter_function_result(value), index}
end)
|> Enum.filter(fn {filter_value_result, index} -> filter_value_result == true)
This would return a list of tuples with the filter value result (booleans) and their indexes, so you can remove the results too if you want
1 Like
Expanding on @gpopides’s idea, you can get the value and the index of all elements that satisfy the condition with this:
enumerable
|> Enum.with_index()
|> Enum.filter( fn {value, index} -> filter_function(value) end )
1 Like