CAIOHOBORGHI

CAIOHOBORGHI

How to find index of element inside enum by property?

I have this enum and I need to find the index of an item by its id(or another property).
[%{“code” => “ABEV3”, “comparison” => “>”, “field” => “close”, “id” => “4a9d96ce-e572-11eb-a557-0242ac170003”, “message” => “ABEV3 Close price is higher than 11.9!”, “value” => 11}]

How to do this?

Showing Posts 1 to 10

Sebb

Sebb

see: Enum.find_index/2

EDIT: OP did not post a map.

Note, that your map-items will be passed as {key, value} to the function.

See the example at the beginning of the Enum documentation:

map = %{"a" => 1, "b" => 2}
Enum.map(map, fn {k, v} -> {k, v * 2} end)
[{"a", 2}, {"b", 4}]
CAIOHOBORGHI

CAIOHOBORGHI OP

Didn’t get it… I understand that I can use find when I already have the element, like this /

Enum.find(alerts, fn x -> equal?(x, alert) end)
    |> case do
      nil -> alerts
      idx -> List.delete_at(alerts, idx)
    end

But when I want to find it by the property, I’m not being able to, tryed

 Enum.find(alerts, fn x -> equal?({:id}, alert_id) end)
    |> case do
      nil -> alerts
      idx -> List.delete_at(alerts, idx)
    end

and

Enum.find(alerts, fn {:id => id} -> equal?(id, alert_id) end)
    |> case do
      nil -> alerts
      idx -> List.delete_at(alerts, idx)
    end

But didn’t work

Sebb

Sebb

Sorry I overlooked that you want the index. I updated my answer.

CAIOHOBORGHI

CAIOHOBORGHI OP

But the question is how to find by property… The examples show how to find by equality, I currently don’t have the entire object, only the property(id) value

Sebb

Sebb

You want to (eg) find the index of the item with id==2 right?

[%{id: 1, foo: :bar}, %{id: 2, foo: :baz}, %{id: 3, foo: :foobar}]

So you want the index of {id: 2, foo: baz} which is 1…?

Edit: too much python today.

CAIOHOBORGHI

CAIOHOBORGHI OP

Exactly

Sebb

Sebb

find_index/2 will return the index of the first element, where the function you provide returns true.
So write that function.

CAIOHOBORGHI

CAIOHOBORGHI OP

Don`t like python, but C, C#, Javascript… I’m just new to Elixir, and didn’t spend enough time to learn it yet, but thank you for your help

Sebb

Sebb

Sorry I most likely confused you with the hint that map-items are given as {k, v} to the function.
You have a list of maps, So you just do:

e = [%{foo: :bar, id: 1}, %{foo: :baz, id: 2}, %{foo: :foobar, id: 3}]
iex(3)> Enum.find_index(e, fn v -> v.id == 1 end)                           
0

So find_index goes through the list element by element, calls the function you provide and if this function return true, the index is returned.

Sebb

Sebb

take a look at the great visual Elixir reference:

Where Next? Top

Trending in Questions Top

water
I’m aware of 2 such projects, are there others? git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
peck
Hi everyone. My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
bradley
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
unaware8150
Hello folks! So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
Alvinkariuki
How Can I Optimise Compile Time Dependencies I have been building an elixir application for about 2 years now. Many modules and files ha...
New
leoschweizer
Hi, we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New

Other Trending Topics Top

budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews