我有这个功能:
(defn list-data [alist filter-text]
(filter (fn [x] (if (nil? filter-text) true
(> (.indexOf x filter-text) -1))) alist))
(list-data ["Lion" "Zebra" "Buffalo" "Antelope"] "a")
;=> ("Zebra" "Buffalo")
Run Code Online (Sandbox Code Playgroud)
是否有更惯用的方式编写此函数并尊重我不想要区分大小写的过滤器这一事实,这意味着我希望(list-data ["Lion" "Zebra" "Buffalo" "Antelope"] "a")返回以下内容:
;=> ("Zebra" "Buffalo" "Antelope")
Run Code Online (Sandbox Code Playgroud)
谢谢!
(这需要在.cljs文件中工作)
我想用clojure解析来自我的IMAP收件箱的邮件.
我知道有clojure邮件库,但我没有Gmail帐户.谢谢!
如果我这样做,我可以使用什么功能:
(the-function :a [1 2 3 4 5])
我明白了:
[{:a 1} {:a 2} {:a 3} {:a 4} {:a 5}]
谢谢你的回答!
假设我们有这个嵌套的向量:
(def coll [nil [["this" nil "this"] nil] nil "this"])
Run Code Online (Sandbox Code Playgroud)
你会如何设计一个remove-nil函数,以便所有nil消失?
(remove-nil coll)
;> [[["this" "this"]] "this"]
Run Code Online (Sandbox Code Playgroud) :on-click如果:on-double-click事件被触发,有什么简单的方法来延迟事件首先查看?
[:div {:on-click "listen to double-click event, within 500ms,
if so on-double-click-fn,
if not, on-click-fn"
:on-double-click "on-click-fn"}]
Run Code Online (Sandbox Code Playgroud)
谢谢!
第一次尝试:
(defn sleep [timeout]
(let [maxtime (+ (.getTime (js/Date.)) timeout)]
(while (< (.getTime (js/Date.)) maxtime))))
[:div {:on-click #(do (sleep 500) (print "single-clicked"))
:on-double-click #(print "double-clicked")}]
Run Code Online (Sandbox Code Playgroud)
第二次尝试:
(def state (atom {:click-count 0}))
(defn handle-click [e click-fns-map]
(do (swap! state update :click-count inc)
(sleep 500)
(let [click-count (get @state :click-count)]
(swap! state assoc :click-count 0)
(cond
(= click-count 1) ((:on-single-click click-fns-map) …Run Code Online (Sandbox Code Playgroud) 当我通过这个功能
(into []
(map #(+ %1 %2)
[1 2]
[5 6]))
Run Code Online (Sandbox Code Playgroud)
我得到这个结果: [6 8]
我该怎么做才能得到这个:[6 7 7 8]保持这个#(+ %1 %2)?
map在这种情况下似乎不是正确的功能.
什么是最快的方式来转换这个集合:
[[{:a 1} {:a 2} {:a 3}] [{:b 4} {:b 5} {:b 6}] [{:c 7} {:c 8} {:c 9}]]
Run Code Online (Sandbox Code Playgroud)
进入这个系列?:
[{:a 1, :b 4, :c 7} {:a 2, :b 5, :c 8} {:a 3, :b 6, :c 9}]
Run Code Online (Sandbox Code Playgroud)
我想出了这个,但我仍觉得它可能更短:
(map (partial apply merge)
(apply map vector collection))
Run Code Online (Sandbox Code Playgroud)
请注意,这些数字是随机选取的,只是为了表明每个val的内容是唯一的......
所以我有这个:
[{:a ["x" "y"], :b "foo"}
{:a ["x" "y" "z"], :b "bar"}]
Run Code Online (Sandbox Code Playgroud)
想要这个:
[{:a "x", :b "foo"}
{:a "y", :b "foo"}
{:a "x", :b "bar"}
{:a "y", :b "bar"}
{:a "z", :b "bar"}]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
如何更新作为字符串数组的列以将每个字符串转换为小写?
像这样将列的所有值更新为小写,但对于字符串数组。
数据示例:
id | tags
---+---------------------------------------------------------------
58 |
87 | {Pasta}
94 | {trendy,Supper,"Restaurant casual"}
...
Run Code Online (Sandbox Code Playgroud) 我想创建一个getnext fn,它在coll中查找元素,当匹配时,返回下一个元素.此外,如果最后一个元素作为参数传递,它应该返回第一个元素.
(def coll ["a" "b" "c" "d"])
(defn get-next [coll item] ...)
(get-next coll "a") ;;=> "b"
(get-next coll "b") ;;=> "c"
(get-next coll "c") ;;=> "d"
(get-next coll "d") ;;=> "a" ; back to the beginning
Run Code Online (Sandbox Code Playgroud)
谢谢!