diff --git a/README.md b/README.md index 757343a..2c75cc6 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). -_1390 TILs and counting..._ +_1391 TILs and counting..._ --- @@ -528,6 +528,7 @@ _1390 TILs and counting..._ - [Filter Out Results Based On List Of Values](jq/filter-out-results-based-on-list-of-values.md) - [Find All Objects In An Array Where Key Is Set](jq/find-all-objects-in-an-array-where-key-is-set.md) - [Find All Objects With A Matching Key Value Pair](jq/find-all-objects-with-a-matching-key-value-pair.md) +- [Get A Slice Of The Ends Of An Array](jq/get-a-slice-of-the-ends-of-an-array.md) - [Get The First Item For Every Top-Level Key](jq/get-the-first-item-for-every-top-level-key.md) - [Get The Last Item From An Array](jq/get-the-last-item-from-an-array.md) - [Reduce Object To Just Entries Of A Specific Type](jq/reduce-object-to-just-entries-of-a-specific-type.md) diff --git a/jq/get-a-slice-of-the-ends-of-an-array.md b/jq/get-a-slice-of-the-ends-of-an-array.md new file mode 100644 index 0000000..1f65e45 --- /dev/null +++ b/jq/get-a-slice-of-the-ends-of-an-array.md @@ -0,0 +1,37 @@ +# Get A Slice Of The Ends Of An Array + +[`jq`](https://jqlang.github.io/jq/) has an array slice syntax that allows us +to grab a subset of values from an array. The general form of this syntax is +`[n:m]` where `n` is the index of the start of our slice (inclusive) and `m` is +the index of the end of our slice (non-inclusive). + +If we omit the `n`, it defaults to `0`, or the start of the array. Similarly, +if we omit the `m`, it defaults to the end of the list. + +Knowing that, we can grab the first few elements of the list like so: + +```bash +❯ echo '["a","b","c","d","e","f","g"]' | jq '.[:3]' +[ + "a", + "b", + "c" +] +``` + +We can also use a negative index value to count back from the end of the array. +This allows us to grab a slice from some point relative to the end of the list. +Instead of having to compute it based on knowing the length of the array. + +Knowing that, we can grab the last few elements of the list like so: + +```bash +❯ echo '["a","b","c","d","e","f","g"]' | jq '.[-3:]' +[ + "e", + "f", + "g" +] +``` + +[source](https://jqlang.github.io/jq/manual/#array-string-slice)