clojurescript迭代对象的键

dag*_*da1 2 clojurescript

我正在使用clojurescript 0.0-2371,我正在尝试编写一些克隆对象的代码.我有这个代码,我想克隆一个节点并调用一个clone-object函数:

(def animate
  (js/React.createClass
   #js
   {:getInitialState
    (fn []
      (this-as this
               {:children
                (->
                 (.. this -props -children)
                 (js/React.Children.map (fn [child] child))
                 (js->clj :keywordize-keys false))}))
    :render
    (fn []
      (this-as this
               (let [children (:children (.. this -state))]
                 (doseq [[k v] children]
                   (clone-object (aget children k))))))}))
Run Code Online (Sandbox Code Playgroud)

clone-object 看起来像这样:

(defn clone-object [obj]
  (log/debug obj)
  (doseq [[k v] obj]
    (log/debug k)))
Run Code Online (Sandbox Code Playgroud)

如果我这样打电话clone-object:

(doseq [[k v] children]
  (clone-object v))
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

未捕获的错误:[object Object]不是ISeqable

dag*_*da1 8

答案是使用goog.object.forEach:

(defn clone-object [key obj]
  (goog.object/forEach obj
     (fn [val key obj]
        (log/debug key))))
Run Code Online (Sandbox Code Playgroud)