Somehow, the title of the question "Looking for a better way to map through array of objects and return specific keys, where ids match" is different from what the code is doing, which is to find the first element that matches the condition. If it is the first element, then you'd use find. But if it is to find all the elements, then:
My solution would be like @Nick's:
results = districts
.filter(e => (e.districtId === givenDistrictValueId))
.map(e => e.name);
and I would like to add: just like in real life, if you have 100 items and you would find out 3 or 16 particular ones and then find their prices or serial numbers, you'd first filter the items out, and then get their serial numbers. If you create 100 empty box and put a serial number in it or undefined or null or "" in it, you'd be creating the 100 boxes one more time. And it is a bit weird. If it is a million or two million boxes, it matters more.
There is also one catch: if some item happen to have an empty serial number (a string), then the solution would get one less item in the results if you map first and then filter, because empty string is also falsy. If you filter first and then map, you'd correctly get the empty string.