带布尔参数的jq反转数组函数未返回数组,返回true问题咨询
问题描述
想用jq实现一个数组反转函数reverseIfTrue,它接收一个布尔参数,指定是否反转输入数组。但调用后函数未返回(可能反转后的)数组,反而返回了true。
jq 过滤器(错误版本)
def reverseIfTrue($reverse): if $reverse then reverse else . end; reverseIfTrue(true)
JSON 输入
["a","b"]
错误输出
true
问题原因
错误出在函数调用方式上:原过滤器直接写reverseIfTrue(true),没有将输入数组通过管道传递给函数,导致函数未处理目标数组,反而出现参数与输入的混淆,最终返回布尔值true。
解决方案
修改过滤器,将输入数组通过管道(|)传递给函数,同时正确传递布尔参数:
def reverseIfTrue($reverse): if $reverse then reverse else . end; . | reverseIfTrue(true)
正确输出
["b","a"]
内容的提问来源于stack exchange,提问作者tg0h
相关产品推荐
相关产品推荐

