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

如何移除嵌套数组中每个子数组的最后一个对象并生成新数组

解决方案

你可以直接通过遍历外层子数组做切片的方式实现需求,正确的jq命令如下:

jq 'map(.[0:-1])' 你的输入文件路径

写法说明

  • map() 用来遍历外层数组的每一个子元素(也就是你需要处理的每个子数组)
  • .[0:-1] 是jq的原生数组切片语法,含义是取从下标0开始、到倒数第一个元素之前的所有内容,正好实现移除每个子数组最后一个元素的效果

之前写法不生效的原因

你尝试的... |= .[:-1]用了递归下降运算符...,会匹配所有层级的可遍历结构,不符合你只需要处理外层直接子数组的需求;to_entries相关写法属于多余操作,处理数组切片不需要先转成键值对结构。

如果需要兼容可能为空的子数组,可以用更稳妥的写法:

jq 'map(if length > 0 then .[:-1] else . end)' 你的输入文件路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:45:08