You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在索引化映射中为单个条目添加索引与计数

如何在索引化映射中为单个条目添加索引与计数

嘿,我懂你现在的需求啦!你已经能用map-indexed给每个分组(就是那些不同content_type的对象)加上索引来排序和引用,但还想给每个分组里的单个条目(比如"000"、"bing"、"bong"这些)也添上专属的索引和计数,对吧?先看看你提供的示例数据和现有代码:

示例JSON数据

[ {
 "id" : "z1",
"content_type" : "single",
"item_1" : "000"
}, {
"id" : "z2",
"content_type" : "double",
"item_1" : "bing",
"item_2" : "bong"
}, {
 "id" : "z3",
"content_type" : "triple",
"item_1" : "tttt",
"item_2" : "toooo",
"item_3": "tiii"
}, {
"id" : "z4",
"content_type" : "double",
"item_1" : "111",
"item_2" : "222"
}]

现有组件代码

[:div.scroller 
   (doall
    (map-indexed
     (fn [index coll]
      (condp = (:content_type coll)
       "single" ^{:key (str index)}[:div (str (:item_1 coll))]
       "double" ^{:key (str index)}[:div 
                             [:div (str (:item_1 coll))][:div (str (:item_2 coll))]
                                    [:div (str index)]]
       )) collections))]

解决方案

要实现给单个条目加索引和计数,我们可以先把每个分组里的item_*字段提取出来并排序,再用map-indexed给每个条目添上索引。这里给你修改后的代码:

[:div.scroller 
  (doall
   (map-indexed
    (fn [group-index coll]
      ;; 提取所有以item_开头的字段,按键名排序后只保留值,保证item_1、item_2的顺序
      (let [items (->> coll
                       (filter (fn [[k _]] (clojure.string/starts-with? (name k) "item_")))
                       (sort-by key)
                       (map val))]
        (condp = (:content_type coll)
          "single" ^{:key (str group-index)}
          [:div 
           ;; 给每个单个条目加上索引
           (map-indexed (fn [item-index item] 
                          [:div (str "[" item-index " " item "]")]) items)]
          "double" ^{:key (str group-index)}
          [:div 
           ;; 给每个条目加索引
           (map-indexed (fn [item-index item] 
                          [:div (str "[" item-index " " item "]")]) items)
           ;; 原有的分组索引保留
           [:div (str "Group index: " group-index)]
           ;; 还可以加条目计数
           [:div (str "Total items in group: " (count items))]]))) collections))]

代码说明:

  1. 提取并排序条目:用filter筛选出所有键名以item_开头的字段,再用sort-by key保证item_1、item_2的顺序,最后用map val拿到纯粹的条目内容列表。
  2. 单个条目加索引:对每个条目列表再次使用map-indexed,就能给每个条目生成专属的索引,输出你想要的[0 "000"]、[1 "bing"]格式。
  3. 扩展计数功能:如果需要显示每个分组的条目总数,直接用(count items)就能获取,比如示例里的Total items in group。

这样既保留了原有的分组索引,又给每个单个条目添上了独立的索引和计数,完全符合你的需求哦!

备注:内容来源于stack exchange,提问作者txesc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 12:03:03