【发布时间】:2023-03-16 22:35:01
【问题描述】:
我是 clojure 的新手,我需要混合一个非常复杂的(对我而言)包含 Vector 内部的映射。
原图:
{:cars {:previous-page nil, :next-page 2, :count 33, :items [{:id 1, :name "test1"}, {:id 2, :name "test2"}]},
:trucks {:previous-page nil, :next-page 2, :count 11, :items [{:id 1, :name "test3"}, {:id 2, :name "test4"}]},
:boats {:previous-page nil, :next-page 2, :count 22, :items [{:id 1, :name "test5"}, {:id 2, :name "test6"}]}}
第二张地图:
{:cars {:previous-page 2, :next-page 3, :count 33, :items [{:id 3, :name "test7"}, {:id 4, :name "test8"}]},
:trucks {:previous-page 3, :next-page 4, :count 11, :items [{:id 3, :name "test9"}, {:id 4, :name "test10"}]},
:boats {:previous-page 4, :next-page 5, :count 22, :items [{:id 3, :name "test11"}, {:id 4, :name "test12"}]}}
我只需要将这两张地图混合在一张中:
{:cars {:previous-page 2, :next-page 3, :count 33, :items [{:id 1, :name "test1"}, {:id 2, :name "test2"},{:id 3, :name "test7"}, {:id 4, :name "test8"}]},
:trucks {:previous-page 3, :next-page 4, :count 11, :items [{:id 1, :name "test3"}, {:id 2, :name "test4"},{:id 3, :name "test9"}, {:id 4, :name "test10"}]},
:boats {:previous-page 4, :next-page 5, :count 22, :items [{:id 1, :name "test5"}, {:id 2, :name "test6"},{:id 3, :name "test11"}, {:id 4, :name "test12"}]}}
【问题讨论】:
-
合并它们的规则是什么?您是否需要一个规则,因为您将定期解决这个问题,或者您可以只修复您的数据?
-
根据结果我会推断出这样的事情:
(merge-with (partial merge-with #(if (coll? %1) (into %1 %2) %2)) map1 map2) -
@jmargolisvt 我需要替换分页值(上一页和下一页),并且在订单中我必须合并项目项目:[{1},{2},{3}, {4}]