【问题标题】:How to loop a JavaScript object and push each into an array, in Clojurescript如何在 Clojurescript 中循环一个 JavaScript 对象并将每个对象推入一个数组
【发布时间】:2023-03-25 18:34:01
【问题描述】:

如何转换这个函数(转换为 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]
  ????
)

【问题讨论】:

    标签: javascript clojure clojurescript om reagent


    【解决方案1】:

    以下是 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))))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 2018-01-04
      • 2020-02-08
      • 2020-12-19
      • 2018-01-20
      • 2021-01-06
      相关资源
      最近更新 更多