我有一张地图列表,我需要知道此列表中是否包含其他地图:
地图列表:
[{:a 1} {:a 2} {:a 3}]
我的地图:
{:a 2}
预期输出:
true
我曾尝试使用contains,但不起作用。 我想出了一个解决方案,但我认为它不是一个好的解决方案:
(map
(fn [x]
(if (= x {:a 1})
true
false))
[{:a 1} {:a 2} {:a 3}])
此代码的结果是,我得到的是对还是错列表,我将需要查看此列表中是否包含一个真。
所以我的问题是,是否存在某种更容易验证地图列表中是否存在地图的方法?
答案 0 :(得分:2)
我认为这个问题可以概括为“如何判断序列是否包含值?” some
对此有好处:
(some pred coll)
它通过调用pred
的每一项从coll
返回第一个逻辑真值。
例如,谓词可以是简单的相等性检查:
user=> (some #(= % {:foo 1})
[{:foo 1} {:foo 2}])
true
使用集合作为谓词也很常见:
一个常见的习惯用法是使用set作为pred,例如 如果
:fred
在序列中,它将返回:fred
,否则返回nil:(some #{:fred} coll)