Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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数组映射和按bug排序的映射?_Clojure_Clojurescript - Fatal编程技术网

ClojureScript数组映射和按bug排序的映射?

ClojureScript数组映射和按bug排序的映射?,clojure,clojurescript,Clojure,Clojurescript,或 3.3万,w{:idx 11},3.3万,3.3万,3.3万,3.3万,3.3{:idx 11},3.3{:idx 17},3.3{:idx 20},3.3{:idx 22},3.3},3.3},n{:idx 22},3.3{,3.3},z,z,3{:若若上述3.3{{:idx 17},3.3万万,3.3{{0 0 0 0 0 0,3.3万,若若如如如如如如如如上述上述上述上述上述,3万万万万万万万,,3.3万万万万万万万万万万万万,,若若若如如如如如如如如如如如如如如上述上述上述上述上述,

3.3万,w{:idx 11},3.3万,3.3万,3.3万,3.3万,3.3{:idx 11},3.3{:idx 17},3.3{:idx 20},3.3{:idx 22},3.3},3.3},n{:idx 22},3.3{,3.3},z,z,3{:若若上述3.3{{:idx 17},3.3万万,3.3{{0 0 0 0 0 0,3.3万,若若如如如如如如如如上述上述上述上述上述,3万万万万万万万,,3.3万万万万万万万万万万万万,,若若若如如如如如如如如如如如如如如上述上述上述上述上述,3万万万万万万万万万万万万万万万万万万万万万万万万万,,18},“g{:idx 0}”,l{:idx 16},u{:idx 20},h{:idx 10},“m{:idx 16}”,o{:idx 11},c{:idx 4}”

如果我们把数量限制在8就可以了

(let [mymap (into {} (for [x (shuffle (rest (clojure.string/split "abcdefghijklmnopqrstuvwxyz" #"")))]
                       {x {:idx (rand-int 24)}}))]
  (->> mymap
       (sort-by (fn [[_ m]] (:idx m)))
       (into (array-map))))
{“z{:idx 1}”,q{:idx 6},n{:idx 7},s{:idx 7},f{:idx 9},d{:idx 17},w{:idx 18},e{:idx 21}


可能与

您使用的clojurescript版本有关?cljs 0.0-3308中的第一个表单保持您期望的排序顺序:

(let [mymap (into {} (for [x (shuffle (rest (clojure.string/split "abcdefghijklmnopqrstuvwxyz" #"")))]
                       {x (rand-int 24)}))]
  (into (sorted-map-by (fn [k1 k2]
                         (compare [(get mymap k1) k1]
                                  [(get mymap k2) k2])))
        (take 8 mymap)))

您使用的是早于2411的版本吗?这是第一个版本,包括对您链接的问题的答案中解释的问题的修复。它是在2411版本中首次发布的版本上修复的。

问题是什么?是一个大问题。
(let [mymap (into {} (for [x (shuffle (rest (clojure.string/split "abcdefghijklmnopqrstuvwxyz" #"")))]
                       {x (rand-int 24)}))]
  (into (sorted-map-by (fn [k1 k2]
                         (compare [(get mymap k1) k1]
                                  [(get mymap k2) k2])))
        (take 8 mymap)))
    (println *clojurescript-version*) ;=>  "0.0-3308"

    (let [mymap (into {} (for [x (shuffle (rest (clojure.string/split "abcdefghijklmnopqrstuvwxyz" #"")))]
                           {x {:idx (rand-int 24)}}))]
      (into (sorted-map-by (fn [k1 k2]
                             (compare [(get-in mymap [k1 :idx]) k1]
                                      [(get-in mymap [k2 :idx]) k2])))
            mymap))
    ;=> {"d" {:idx 0}, "i" {:idx 0}, "w" {:idx 5}, "n" {:idx 6}, "q" {:idx 9}, "y" {:idx 9}, "k" {:idx 10}, "m" {:idx 10}, "x" {:idx 10}, "c" {:idx 12}, "h" {:idx 12}, "l" {:idx 13}, "v" {:idx 14}, "s" {:idx 15}, "z" {:idx 16}, "j" {:idx 17}, "p" {:idx 17}, "t" {:idx 17}, "o" {:idx 18}, "r" {:idx 19}, "b" {:idx 20}, "e" {:idx 20}, "a" {:idx 21}, "f" {:idx 21}, "g" {:idx 22}, "u" {:idx 23}}