Условное удаление из массива поля A с условием для поля B - PullRequest
2 голосов
/ 03 мая 2020

Допустим, у меня есть json с массивом внутри. Скажем, что элементы этого массива являются объектами с ключами A и B. Я хотел бы удалить объекты B на элементах, где объекты A удовлетворяют определенному условию. Например, я хотел бы удалить объекты B, где A больше 5, преобразовав

{
  "title": "myTitle",
  "myArray": [
     {
        "A": 1,
        "B": "foo"
     },
     {
        "A": 4,
        "B": "bar"
     },
     {
        "A": 7,
        "B": "barfoo"
     },
     {
        "A": 9,
        "B": "foobar"
     }
  ]
}

в

{
  "title": "myTitle",
  "myArray": [
     {
        "A": 1,
        "B": "foo"
     },
     {
        "A": 4,
        "B": "bar"
     },
     {
        "A": 7
     },
     {
        "A": 9
     }
  ]
}

Задача кажется достаточно простой, и если бы у меня не было чтобы сохранить А, это было бы просто делом (выбрать ..). Там наверняка должен быть элегантный способ сделать это?

Спасибо!

1 Ответ

2 голосов
/ 03 мая 2020

Вы все еще можете использовать del (выбрать ..) вещь .

.myArray[] |= del(select(.A > 5) .B)

демо на jqplay.org

...