mirror of
https://github.com/stedolan/jq.git
synced 2024-05-11 05:55:39 +00:00
Allow the 'keys' function to take arrays.
This commit is contained in:
@@ -228,6 +228,12 @@ static void f_keys(jv input[], jv output[]) {
|
||||
}
|
||||
free(keys);
|
||||
jv_free(input[0]);
|
||||
} else if (jv_get_kind(input[0]) == JV_KIND_ARRAY) {
|
||||
int n = jv_array_length(input[0]);
|
||||
output[0] = jv_array();
|
||||
for (int i=0; i<n; i++){
|
||||
output[0] = jv_array_set(output[0], i, jv_number(i));
|
||||
}
|
||||
} else {
|
||||
output[0] = jv_invalid_with_msg(jv_string_fmt("'keys' only supports object, not %s",
|
||||
jv_kind_name(jv_get_kind(input[0]))));
|
||||
|
@@ -385,10 +385,16 @@ sections:
|
||||
same for any two objects with the same set of keys,
|
||||
regardless of locale settings.
|
||||
|
||||
When `keys` is given an array, it returns the valid indices
|
||||
for that array: the integers from 0 to length-1.
|
||||
|
||||
examples:
|
||||
- program: 'keys'
|
||||
input: '{"abc": 1, "abcd": 2, "Foo": 3}'
|
||||
output: ['["Foo", "abc", "abcd"]']
|
||||
- program: 'keys'
|
||||
input: '[42,3,35]'
|
||||
output: ['[0,1,2]']
|
||||
|
||||
- title: `select`
|
||||
body: |
|
||||
|
Reference in New Issue
Block a user