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

如何用handlebar-helpers内置工具按索引位置计算价格总和

问题

要求仅使用handlebars-helpers库的现有工具,对给定JSON payload中的products数组,按product数组的索引位置计算对应价格的总和,预期输出为「20、40、60」。之前尝试用pluck和sum的写法无法生效,无效代码如下:

{{#each products}}
    {{#each product}}
        {{sum (pluck products "product.price")}}
    {{/each}}
{{/each}}

对应JSON payload:

{
  "products": [
    {
      "product": [
        {
          "price": 10
        },
        {
          "price": 20
        },
        {
          "price": 30
        }
      ]
    },
    {
      "product": [
        {
          "price": 10
        },
        {
          "price": 20
        },
        {
          "price": 30
        }
      ]
    }
  ]
}
可行方案

之前的写法失效是因为pluck products "product.price"会把所有product数组里的price提取成一个一维数组,没法按索引分组求和。要实现按索引位置求和,可借助handlebars-helpers里的map、get、sum以及Handlebars内置的@index变量来实现:

最终代码

{{#each (get (first products) "product")}}
  {{sum (map ../products (concat "product[" @index "].price"))}}
  {{#unless @last}}, {{/unless}}
{{/each}}

代码解析

  • 循环次数控制:通过(get (first products) "product")取第一个商品组的product数组来循环,保证循环次数和每个product数组的元素个数一致(前提是所有product数组长度相同)。
  • 提取同索引价格:用map遍历外层products数组,通过concat拼接出当前索引对应的价格路径(比如product[0].price),把每个商品组中对应索引的price提取出来,形成一个同索引价格的数组(比如第一次循环得到[10, 10])。
  • 求和输出:用sum对同索引价格数组求和,得到对应位置的总和;最后用unless @last添加分隔符,让输出格式符合预期。

内容的提问来源于stack exchange,提问作者That Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:15:54