如何在 Clojurescript 中循环 JavaScript 对象并将每个对象推入数组
How to loop a JavaScript object and push each into an array, in Clojurescript
如何将此函数转换(转换为 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
而不是 loop/recur:
(defn key-value [obj]
(clj->js
(reduce (fn [acc k]
(conj acc (clj->js {k (aget obj k)})))
[]
(.keys js/Object obj))))
如何将此函数转换(转换为 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
而不是 loop/recur:
(defn key-value [obj]
(clj->js
(reduce (fn [acc k]
(conj acc (clj->js {k (aget obj k)})))
[]
(.keys js/Object obj))))