There are plenty of examples of updating a value in a nested entry in jq, but I think I have a unique question, because the value I want to provide is already in another part of the same entry.
Given the following input:
{"items": [    {"name": "first"    },    {"name": "second"    }  ]}I want to produce this output:
{"items": [    {"name": "first","value": "first"    },    {"name": "second","value": "second"    }  ]}In other words, I want to copy the value of .name to the value of .value for each entry in items[].
Assignment is easy enough if the value is static. jq '.items[].value |= "x"
But since the value is dynamic, I always get stuck either at the wrong context level:
$ jq '.items[].value|=.name'<<< '{"items":[{"name": "first"},{"name": "second"}]}'{"items": [    {"name": "first","value": null    },    {"name": "second","value": null    }  ]}Or with the wrong output context:
jq '.items[]|(.value=.name)'<<< '{"items":[{"name": "first"},{"name": "second"}]}'{"name": "first","value": "first"}{"name": "second","value": "second"}How can I make the change within the entries, for each entry, but still output the whole thing from the top level?