【问题标题】:dustjs iterate through array and get countdustjs 遍历数组并获取计数
【发布时间】:2026-01-08 00:35:02
【问题描述】:

dustjs 有没有办法遍历数组并获取出现次数?

我正在尝试从下面的 JSON 数据中获取 type='MOBILE' 的计数:

[
    {
        "type": "MOBILE",
        "formattedPhoneNumber": "5123 4566"
    },
    {
        "type": "MOBILE",
        "formattedPhoneNumber": "5123 4568"
    },
    {
        "type": "MOBILE",
        "formattedPhoneNumber": "5123 4568"
    },
    {
        "type": "LANDLINE",
        "formattedPhoneNumber": "5123 4568"
    }
]

在这里,我预计上述示例中类型为“MOBILE”的计数为 3。

【问题讨论】:

    标签: javascript dust.js kraken.js


    【解决方案1】:

    您可以编写一个简单的助手来为您执行此操作。助手以特定方式从您的上下文中转换数据。更多信息,您可以阅读context helpers上的文档

    {
      "numbers": [{ "type": "MOBILE", ... }, { ... }],
      "countByKey": function(chunk, context, bodies, params) {
        var target = context.resolve(params.target);
        var key = context.resolve(params.key);
        var value = context.resolve(params.value);
        return target.filter(function(item) {
          return item[key] === value;
        }).length;
      }
    }
    

    然后你可以在这样的模板中使用你的助手:

    {#countByKey target=numbers key="type" value="MOBILE"}You have {.} mobile numbers{/countByKey}
    

    【讨论】: