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

如何使用JQ实现字符串数值二维数组元素相乘、生成新数组并求和

jq实现二维数组数值乘算与求和方案

输入结构说明

现有输入JSON中pricexquant字段为二维数组,每个子数组包含2个字符串格式的数值,样例如下:

{
  "pricexquant": [
    [
      "20233.54000000",
      "0.00877000"
    ],
    [
      "20233.39000000",
      "0.00999000"
    ]
  ]
}

需求拆解

  • 遍历每个子数组,将两个字符串转为数值后相乘,每个乘积单独封装为单元素子数组,组成新的结果数组
    注:问题给出的期望输出外层用{}直接包裹数组不符合JSON语法,以下输出均为合法JSON结构
  • 对所有子数组的乘积结果求和,得到最终总数值

具体命令实现

1. 生成乘积结果数组

执行以下jq命令即可得到每个乘积封装为单元素子数组的结果:

jq '.pricexquant | map([ (.[0]|tonumber) * (.[1]|tonumber) | tostring ])' 你的json文件路径

命令逻辑说明:

  • 先取出pricexquant字段的二维数组
  • 用map遍历每个子数组,分别将两个元素通过tonumber转为数字类型后相乘
  • 乘积结果通过tostring转回字符串,包裹在数组中,匹配要求的单元素子数组格式

以上命令对样例输入的输出结果为:

[
  [
    "177.4481458"
  ],
  [
    "202.1315661"
  ]
]

如果需要将结果包裹在对象结构中,可以调整命令为:

jq '{result: .pricexquant | map([ (.[0]|tonumber) * (.[1]|tonumber) | tostring ])}' 你的json文件路径

2. 计算所有乘积的总和

执行以下jq命令即可直接输出所有乘积的求和结果:

jq '.pricexquant | map((.[0]|tonumber) * (.[1]|tonumber)) | add' 你的json文件路径

命令逻辑说明:

  • 遍历子数组计算每个乘积后,通过add方法对乘积一维数组的所有元素求和

以上命令对样例输入的输出结果为379.5797119。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:15:58