【问题标题】:Grails MongoDB ${it} first three entrys of arrayGrails MongoDB ${it} 数组的前三个条目
【发布时间】:2012-10-04 11:04:59
【问题描述】:

经过一天的反复试验,也许有人可以给我一个提示来解决我的问题?

我的任务是使用 MongoDB 开发 Grails 应用程序的前端 我想表达的是,只有 JSON 数组的前三个条目将作为 listpoints 在 div 中,而在另一个 div 中的下三个条目作为 li´s。

在以下示例中,他只是在 li`s 中添加了每个条目:

<g:each in="${profil.leistung}">
 <div>
 <li> ${it} </li>
</div>
</g:each>

我尝试了一些东西,但没有得到它 希望得到帮助,将在我的笔记本电脑上做很多后空翻来解决! 约翰

【问题讨论】:

    标签: arrays mongodb grails each


    【解决方案1】:

    我不确定 JSON 数组是否具体,但对于普通数组或列表,您可以通过仔细使用切片来做到这一点:

    <g:each var="chunk" in="${0..<(profil.leistung.size().intdiv(3) +
                                   (profil.leistung.size() % 3 ? 1 : 0))}">
      <div>
        <ul>
          <g:each in="${profil.leistung[(chunk * 3)..<(Math.min(
                                      profil.leistung.size(), (chunk + 1) * 3))]}">
            <li>${it}</li>
          </g:each>
        </ul>
      </div>
    </g:each>
    

    我在这里做的是计算出我们可以将列表分成多少个三个元素的块(最后一个块可能少于三个元素),然后每次通过外部循环切出元素 3n 包括在内到3(n+1) 独占或列表末尾(以先到者为准)。如果您知道您的列表长度总是是三的整数倍,那么您可以删除边缘情况:

    <g:each var="chunk" in="${0..<profil.leistung.size().intdiv(3)}">
      <div>
        <ul>
          <g:each in="${profil.leistung[(chunk * 3)..<((chunk + 1) * 3)]}">
            <li>${it}</li>
          </g:each>
        </ul>
      </div>
    </g:each>
    

    【讨论】:

    • 哇,效果很好,完成了几次后空翻。非常感谢,你真是个天才
    • 很高兴它对你有用。不过有一点友好的建议——忘记后空翻。获得对 SO 的尊重的方法是提出好的问题,确保包含所有相关信息且没有干扰,并接受好的答案。
    • 谢谢,知道了。尊重所有像你一样给出很好答案的人,这是我的第二个问题,我真的很受宠若惊!!!
    猜你喜欢
    • 2021-12-24
    • 1970-01-01
    • 2014-05-15
    • 2019-05-20
    • 1970-01-01
    • 2012-05-22
    • 2015-01-11
    • 2017-11-17
    • 2014-04-06
    相关资源
    最近更新 更多