Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在clojure中转换嵌套向量映射_Clojure - Fatal编程技术网

在clojure中转换嵌套向量映射

在clojure中转换嵌套向量映射,clojure,Clojure,我需要以相同的方式收集:c/name值并将其传输到嵌套向量的第一级 输入示例: [:a/name "name" :a/vals [{:b/val [{:c/name "one"}{:c/name "two"}]} {:b/val [{:c/name "three"}]}]] 输出: [:a/name :a/vals "one, two, three"] 这将从输入生成输出,这是您想要的吗 (defn f [[k1 _ k2 rels]]

我需要以相同的方式收集:c/name值并将其传输到嵌套向量的第一级

输入示例:

[:a/name "name" :a/vals [{:b/val [{:c/name "one"}{:c/name "two"}]}
                         {:b/val [{:c/name "three"}]}]]
输出:

[:a/name :a/vals "one, two, three"]

这将从输入生成输出,这是您想要的吗

(defn f [[k1 _ k2 rels]]
  [k1 k2
   (clojure.string/join ", "
     (map :c/name (apply concat (mapcat vals rels))))])

对于您的数据来说,这似乎是一种奇怪的输入格式。它是从哪里来的?你能试着解决这个问题并向我们展示你的尝试吗?这看起来像是对这个问题的另一次尝试:非常感谢,这就是我想要的!但是如果我想添加一些条件,[:a/name-name:a/vals[{:b/val[{:c/name-one:c/u-1}{:c/name-two:c/u-2}]}{:b/val[{:c/name-three:c/u-1}]]并将其添加到结果中,如果:c/u=1或:c/u丢失,您可以过滤rel,类似于过滤还是不包含?:c/u%=:c/u%1再次感谢您的解决方案!但是你能用filter编写整个脚本吗,我在函数中使用这个filter时遇到了一些错误[k1 k2 clojure.string/join,map:c/name应用concat mapcat vals filter是否包含?%:c/u=:c/u%1 rels]prn f res和我在不进行筛选的情况下获取值[:a/name:a/vals一、二、三]因此..我希望只过滤:c/u=1的项目,因此结果应该如下:[:a/name:a/vals one,three]