You can use extend
after findWhere
. It's not technically the same as replacing the object with another instance entirely, but it eliminates the extra loop over the array:
_.extend(_.findWhere(users, { userId: updatedUser.userId }), updatedUser);
If this is still not satisfactory then your best bet is probably to iterate manually.
I am deliberately leaving the "object properties keyed by user id" approach out of the discussion because in practice it's not uncommon to have an array in hand to begin with (e.g. the user array was retrieved by an API).