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

为何$formatNumber在表格数组中使用时输出NaN,该如何解决?

表格内数组数据使用$formatNumber格式化失效的解决方案

失效核心原因

QuoteLineItems.records是存储所有发票行项目的数组类型,你直接使用QuoteLineItems.records.AmountNet的写法,是尝试从数组对象本身读取AmountNet属性,数组本身不存在该属性,因此传入$formatNumber的参数为undefined,最终输出NaN。

解决方案

  • 第一步:给发票行项目对应的表格行配置数组循环绑定。主流Word文档合并工具均支持表格重复行功能,你需要将表格行的遍历源绑定到QuoteLineItems.records数组,语法通常为在表格行标记中添加{{#each QuoteLineItems.records}}(不同工具语法略有差异,可对应查看工具的数组循环规则)。
  • 第二步:修改表格内的格式化表达式。完成循环绑定后,表格每一行的上下文自动对应records数组中的单个行项目对象,直接写如下表达式即可生效:
    {{ $formatNumber(AmountNet, '#,###.00') }}

兼容兜底方案

如果存在部分AmountNet为字符串类型的场景,可以先做类型转换再格式化,避免异常:
{{ $formatNumber(Number(AmountNet), '#,###.00') }}

如果不需要动态循环,只是要取数组中指定位置的行项目数据,直接加下标即可,例如取第一条行项目的税后金额:
{{ $formatNumber(QuoteLineItems.records[0].AmountNet, '#,###.00') }}

你提供的示例输入数据如下:

{
    "QuoteLineItems":
    {
        "records":
        [
            {
                "AmountGross": 47897,
                "AmountNet": 44556,
                "Name": "Sample Charges"
            },
            {
                "AmountGross": 4968,
                "AmountNet": 4621,
                "Name": "Sample 2 Charges"
            }
        ],
        "done": true,
        "totalSize": 2
    },
    "Name": "Sample Invoice"
}

用以上配置生成PDF后,表格对应列会依次输出44,556.00、4,621.00,格式化规则正常生效。

内容的提问来源于stack exchange,提问作者Greg J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:27:03