在clojure中两个地图之间的交集

ren*_*ins 3 functional-programming clojure

我有哈希映射,我正试图获得密钥之间的交集.但功能"交集"只适用于集合.

所以我得到了密钥,将密钥转换为集合,然后调用交集,如下所示:

(intersection (set (keys map-1)) (set (keys map-2)))
Run Code Online (Sandbox Code Playgroud)

还有更好的方法吗?

谢谢

noi*_*ith 7

这可能是最简单/最简洁的方法,它不需要构建任何集合(这是相对昂贵的).

(keys (select-keys map-1 (keys map-2)))
Run Code Online (Sandbox Code Playgroud)

最后,一个优化版本,速度更快,更难阅读:

(keep #(some->> % (find map-1) key) (keys map-2))
Run Code Online (Sandbox Code Playgroud)