2015-12-11 45 views
1

如何僅返回訂單中的嵌套列表元素:id匹配127?如何在列表中搜索「訂單」,而無需知道它的位置(僅按價值進行搜索)?如何從Elixir的嵌套列表中篩選特定值?

orders 
[[id: 123, ship_to: :NC, net_amount: 100.0], 
[id: 124, ship_to: :OK, net_amount: 35.5], 
[id: 125, ship_to: :TX, net_amount: 24.0], 
[id: 126, ship_to: :TX, net_amount: 44.8], 
[id: 127, ship_to: :NC, net_amount: 25.0], 
[id: 128, ship_to: :MA, net_amount: 10.0], 
[id: 129, ship_to: :CA, net_amount: 102.0], 
[id: 139, ship_to: :NC, net_amount: 50.0]] 

期望的結果:[ID:127,ship_to:...]

回答

3

您可以使用Enum.find/2這一點。它需要一個枚舉(如你在這裏的orders列表)和一個函數,並返回函數返回一個真值的第一個元素(非false和非nil)。

Enum.find(orders, fn order -> {:id, 127} in order end) 

這只是一種可能的解決方案;有很多可能的:)。例如,你可以使用[]語法與Enum.find/2還有:

Enum.find(orders, fn order -> order[:id] == 127 end) 
+0

太感謝你了,這是我需要的! – PuckRockGrrl

相關問題