使用jq分别更改数组中的每个变量

时间:2017-03-21 14:36:42

标签: jq

我有一个这样的数组:

[
{"price": 10},
{"price": 20},
{"price": 30}
]

我想查看每个价格项目并将其设置为否定。

如果我做这样的事情:

.[].price = .[].price * -1

我会得到:

[
  {
    "price": -10
  },
  {
    "price": -10
  },
  {
    "price": -10
  }
]
[
  {
    "price": -20
  },
  {
    "price": -20
  },
  {
    "price": -20
  }
]
[
  {
    "price": -30
  },
  {
    "price": -30
  },
  {
    "price": -30
  }
]

我如何正确地做到这一点,所以最后它会是这样的?

[
{"price": -10},
{"price": -20},
{"price": -30}
]

2 个答案:

答案 0 :(得分:3)

如果输出是一个数组,那么考虑:

map( .price |= -1 * . )

如果输出价格必须为负,即使输入价格已经为负,那么您可以用以下内容替换parens中的表达式:

  if .price > 0 then .price |= -1 * . else . end

答案 1 :(得分:1)

怎么样

.[] as $x | { price: ($x.price * -1) } 

这是一个有效的例子:
https://jqplay.org/s/VeGHuouLRY