在Clojurescript中,如何循环一个JavaScript对象并将每个对象推送到一个数组中
我如何将这个函数(转换为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
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))))