var array = [{"service_id": 14,"user_id": 56,},{"service_id": 19,"user_id": 59,},
             {"service_id": 18,"user_id": 56,},{"service_id": 18,"user_id": 56}]
const groupByUserId = (array, key) => {
  return array.reduce((result, currentValue) => {(
  //Create a new array as key if there is not found
  result[currentValue[key]] = result[currentValue[key]] || []).push(currentValue);
  return result;
  }, {}); // empty object after initialization
};
const grouped = groupByUserId(array, 'user_id');
console.log(grouped)
 
 
In Javascript your array should look like this:
var array = [{"service_id": 14,"user_id": 56},{"service_id": 19,"user_id": 59},
             {"service_id": 18,"user_id": 56},{"service_id": 18,"user_id": 56}]
There is an assumption to be made here to identify user_id as key in the new grouped array in order to populate the user's similar service_id inside its corresponding array.
const groupByUserId = (array, key) => {
    return array.reduce((result, currentValue) => {(
    //Create a new array as key if there is not found
    result[currentValue[key]] = result[currentValue[key]] || []).push(currentValue);
    return result;
      }, {}); // empty object after initialization
    };
    
    const grouped = groupByUserId(array, 'user_id');
    console.log(grouped)