I can't help myself and surely someone else has already done the same. But the query
  obj.friends.filter(x=>{ return x.city=='New York'})
  .sort((a, b) => a.age - b.age)
  .map(item => ({ name: item.name, age: item.age }));
am I missing something?
The verbosity.
To your point abstractions often multiply and then hide the complexity, and create a facade of simplicity.