Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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
在Clojurescript中,如何循环一个JavaScript对象并将每个对象推送到一个数组中_Javascript_Clojure_Clojurescript_Om_Reagent - Fatal编程技术网

在Clojurescript中,如何循环一个JavaScript对象并将每个对象推送到一个数组中

在Clojurescript中,如何循环一个JavaScript对象并将每个对象推送到一个数组中,javascript,clojure,clojurescript,om,reagent,Javascript,Clojure,Clojurescript,Om,Reagent,我如何将这个函数(转换为Clojurescript)转换为一个JavaScript对象,并将其内容推送到数组中 function toKeyValueList(obj) { var arr = []; for (var key in obj) { if (obj.hasOwnProperty(key)) { arr.push({ key: key, value: obj[key] }); } } retu

我如何将这个函数(转换为Clojurescript)转换为一个JavaScript对象,并将其内容推送到数组中

function toKeyValueList(obj) {
  var arr = [];

  for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
      arr.push({
        key: key,
        value: obj[key]
      });
    }
  }

  return arr;
} 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;    

(defn toKeyValueList [obj]
  ????
)

以下是ClojureScript的等效内容:

(defn key-value [obj]
  (loop [acc [] ks (.keys js/Object obj)]
    (if (seq ks)
      (recur (conj acc (clj->js {(first ks) (aget obj (first ks))})) (rest ks))
      (clj->js acc))))
或者使用
reduce
代替循环/重复:

(defn key-value [obj]
  (clj->js
   (reduce (fn [acc k]
             (conj acc (clj->js {k (aget obj k)})))
           []
           (.keys js/Object obj))))