Во-первых, руководство немного вводит в заблуждение, поскольку показанное значение ввода («Вход 1») не имеет значения. Это видно, например, из того факта, что следующий вызов создает тот же массив:
$ jq -n -c '[ 1 |truncate_stream([[0],1],[[1,0],2],[[1,0]],[[1]])]'
[[[0],2],[[0]]]
Теперь, чтобы понять, как мы получаем из того, что я назову входным потоком:
[[0],1], [[1,0],2], [[1,0]], [[1]]
в выходной поток:
[[0],2], [[0]]]
полезно помнить, что каждый массив во входном потоке имеет либо форму
[path, value]
, либо форму
[path]
Эффект N | truncate_stream(STREAM)
, где N - неотрицательное целое число, заключается в удалении первых N элементов каждого path
при том понимании, что любой элемент, путь которого == [] должен быть удален.
Таким образом, удаление первого элемента с каждого пути дает:
[[],1], [[0],2], [[0]], [[]]
, и это становится:
[[0],2], [[0]]
QED