如何在 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
而不是循环/重复:
(defn key-value [obj]
(clj->js
(reduce (fn [acc k]
(conj acc (clj->js {k (aget obj k)})))
[]
(.keys js/Object obj))))
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- AngularJS&JSON-从Previous&下一个对象
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 你能用来自数组的属性名称生成一个对象吗
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- Protractor:element.getText()返回一个对象,而不是String
- 如何使用jQuery添加另一个对象的高度作为边距
- 计算从一个对象到另一个对象的路径并沿其移动
- 如何将一个对象添加到每个对象数组中
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 将javascript对象(属性+值)合并到一个对象中
- 尝试简化检查对象键是否为true并将其推送到另一个对象
- 从 javascript 中的对象方法返回一个对象
- 响应应包含一个对象,但得到的却是GET操作的数组
- js:如何制作一个循环,将20个不同的东西添加到一个对象中
- 用javascript创建另一个对象的实例