如何在以下订单中仅返回嵌套列表元素:id匹配127?如何在列表中搜索它,"命令",而不知道它的位置(只是按值搜索)?
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:...]
答案 0 :(得分: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)