Javascript 在HTML中呈现时如何对记录进行分组

Javascript 在HTML中呈现时如何对记录进行分组,javascript,html-table,servicenow,jelly,Javascript,Html Table,Servicenow,Jelly,我有一组从后端获取的记录,并使用javascript代码按类别分组返回 实际上,这些记录只是通过字符串连接以HTML呈现,如下所示: 知识库编号1-简短描述-类别1 知识库编号2-简短描述-类别2 知识库编号3-简短描述-类别1 知识库编号4-简短描述-类别5 知识库编号5-简短描述-类别6 知识库编号6-简短描述-类别7 知识库编号7-简短描述-类别5 我试图表示的是上面以HTML呈现的记录集,如下所示: 类别1: 知识库编号1-简短说明 知识库编号3-简短说明 第2类: 知识库编号2-简短说

我有一组从后端获取的记录,并使用javascript代码按类别分组返回

实际上,这些记录只是通过字符串连接以HTML呈现,如下所示:

知识库编号1-简短描述-类别1 知识库编号2-简短描述-类别2 知识库编号3-简短描述-类别1 知识库编号4-简短描述-类别5 知识库编号5-简短描述-类别6 知识库编号6-简短描述-类别7 知识库编号7-简短描述-类别5

我试图表示的是上面以HTML呈现的记录集,如下所示:

类别1: 知识库编号1-简短说明 知识库编号3-简短说明

第2类: 知识库编号2-简短说明

第5类: 知识库编号4-简短说明 知识库编号7-简短说明

第6类: 知识库编号5-简短说明

第7类: 知识库第6号-简短说明

如何呈现HTML,以便每个组只重复一次类别

下面是用特定字符串表示它们的示例代码:

GlideRecordSecure('u_kb_template_sharepoint_document');
                                               kb.addQuery('cmdb_ci',current.sys_id);
                                               kb.addQuery('latest',true);
                                               kb.orderBy('kb_category');
                                               kb.query();
                                               "/>

<j2:if test="$[kb.next()]" >
    <tr>
        <td class="label label_spacing">
            <span style="margin-right:3px; margin-left:1px;">$[SP]</span>
            ${gs.getMessage('Attached knowledge:')}
        </td>
        <td>
            <g2:evaluate>
                var hasMore = true;
                var category = kb.getDisplayValue('kb_category');
            </g2:evaluate>
            <j2:while test="$[hasMore]">
                <div>
                    <img src="images/nav_bult.gifx" alt="${gs.getMessage('Knowledge Base Article')}" />
                    <a class="obvious" target="_blank" href="$[kb.u_kb_url]">$[HTML:kb.number] - $[HTML:kb.short_description] - $[category]</a>
                </div>
                <g2:evaluate>
                    hasMore = kb.next();
                </g2:evaluate>
            </j2:while>
        </td>
    </tr>
</j2:if>
GlideRecordSecure('u_kb_模板_sharepoint_文档'); kb.addQuery('cmdb\u ci',当前的.sys\u id); kb.addQuery('latest',true); kb.orderBy('kb_类别'); kb.query(); "/> $[SP] ${gs.getMessage('附加知识:')} var hasMore=真; var category=kb.getDisplayValue('kb_category'); hasMore=kb.next(); 我如何才能将其更新为分组,未发现

请注意,此脚本是ServiceNow中Jelly元素的一部分


谢谢

首先,这并不是一个真正的HTML问题,尽管您当然需要考虑如何直观地表示它。也就是说,结果将是一个包含动态条目的表

现在,关于主要问题——“如何只显示一次类别”——您需要在javascript中执行类似的操作(伪代码)——假设“记录”是一个包含这7条记录的数组

  • records.sort(按类别)-->假设字符串尚未连接,并且您可以作为单个变量访问类别
  • 记录。foreach(项目){ 将上一个项目与当前项目进行比较 如果不同,创建新的HTML行,打印类别(否则保持在同一行) 如果类别相同,只需附加字符串 previousitem=项目 }

-->因此,您可以按“类别”对数据进行排序,从而将它们分组到数据中的每个记录旁边。然后可以将每个记录与下一个记录进行比较,以便为生成相应的HTML设置正确的逻辑。

请向我们展示您尝试过的内容以及代码的外观。我的示例代码snipet显示了连接的部分,但是d不知道如何进行分组这是我不熟悉的关于如何构建动态html的方法,你有样本吗?因此,我不知道Jelly和ServiceNow是否适用于此上下文,因此这扩大了原始问题的范围。但基本上,你需要在html结构的正确位置注入逻辑。我看到你已经有了“orde”rby(Category)“”在您的逻辑中。现在您需要在标记前面放置(如果previouscategory=currentcategory)。也就是说,只有在新类别出现时才有“”标记。